class Solr::Query::Request::Filter
Constants
- EQUAL_TYPE
- NOT_EQUAL_TYPE
Attributes
field[R]
type[R]
value[R]
Public Class Methods
new(type:, field:, value:)
click to toggle source
# File lib/solr/query/request/filter.rb, line 14 def initialize(type:, field:, value:) @type = type @field = field @value = value end
Public Instance Methods
solr_field()
click to toggle source
# File lib/solr/query/request/filter.rb, line 24 def solr_field solarize_field(@field) end
solr_value()
click to toggle source
# File lib/solr/query/request/filter.rb, line 28 def solr_value if value.is_a?(::Array) value.map { |v| to_primitive_solr_value(v) }.join(' OR ') elsif value.is_a?(::Range) to_interval_solr_value(value) else to_primitive_solr_value(value) end end
to_solr_s()
click to toggle source
# File lib/solr/query/request/filter.rb, line 20 def to_solr_s "#{solr_prefix}#{solr_field}:(#{solr_value})" end
Private Instance Methods
date_infinity?(value)
click to toggle source
# File lib/solr/query/request/filter.rb, line 60 def date_infinity?(value) value.is_a?(DateTime::Infinity) end
date_or_time?(value)
click to toggle source
# File lib/solr/query/request/filter.rb, line 68 def date_or_time?(value) return false unless value value.is_a?(::Date) || value.is_a?(::Time) end
numeric_infinity?(value)
click to toggle source
# File lib/solr/query/request/filter.rb, line 64 def numeric_infinity?(value) value.is_a?(Numeric) && value.infinite? end
solr_prefix()
click to toggle source
# File lib/solr/query/request/filter.rb, line 40 def solr_prefix '-' if NOT_EQUAL_TYPE == type end
to_interval_solr_value(range)
click to toggle source
# File lib/solr/query/request/filter.rb, line 44 def to_interval_solr_value(range) solr_min = to_primitive_solr_value(range.first) solr_max = to_primitive_solr_value(range.last) "[#{solr_min} TO #{solr_max}]" end
to_primitive_solr_value(value)
click to toggle source
# File lib/solr/query/request/filter.rb, line 50 def to_primitive_solr_value(value) if date_infinity?(value) || numeric_infinity?(value) '*' elsif date_or_time?(value) value.strftime('%Y-%m-%dT%H:%M:%SZ') else %("#{value.to_s.solr_escape}") end end