Class: OssActiveRecord::SearchRequest
- Inherits:
-
Object
- Object
- OssActiveRecord::SearchRequest
- Defined in:
- lib/oss_active_record/search_request.rb
Instance Method Summary collapse
- #execute(&block) ⇒ Object
- #filter(field, value, negative) ⇒ Object
- #fulltext(keywords, &block) ⇒ Object
-
#initialize(index_instance) ⇒ SearchRequest
constructor
A new instance of SearchRequest.
- #order_by(field = nil, direction = :asc) ⇒ Object
- #paginate(params) ⇒ Object
- #returns(fields) ⇒ Object
- #with(field, value) ⇒ Object
- #without(field, value) ⇒ Object
Constructor Details
#initialize(index_instance) ⇒ SearchRequest
Returns a new instance of SearchRequest.
3 4 5 6 7 8 |
# File 'lib/oss_active_record/search_request.rb', line 3 def initialize(index_instance) @params = {'start' => 0, 'rows' => 10} @filters = [] @index_instance = index_instance @order_by = {} end |
Instance Method Details
#execute(&block) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/oss_active_record/search_request.rb', line 44 def execute(&block) self.instance_eval(&block) unless block.nil? @params['filters'] = @filters unless @filters.length == 0 fields = [] @index_instance.text_fields.each do |key, value| fields<<{ "field"=> value,"phrase"=> true,"boost"=> 1.0} end @params['searchFields'] = fields unless fields.length == 0 sorts = [] @order_by.each do |key, value| sorts<<{ "field"=> key,"direction"=> value} end @params['sorts'] = sorts unless sorts.length == 0 return @index_instance.oss_index.search_field(@params) end |
#filter(field, value, negative) ⇒ Object
14 15 16 |
# File 'lib/oss_active_record/search_request.rb', line 14 def filter(field, value, negative) @filters << {"type"=> "QueryFilter", "negative"=> negative, "query"=> "#{field}:(#{value})"} end |
#fulltext(keywords, &block) ⇒ Object
10 11 12 |
# File 'lib/oss_active_record/search_request.rb', line 10 def fulltext(keywords, &block) @params['query'] = keywords end |
#order_by(field = nil, direction = :asc) ⇒ Object
39 40 41 42 |
# File 'lib/oss_active_record/search_request.rb', line 39 def order_by(field = nil, direction = :asc) index_field = field == :score ? 'score' :@index_instance.find_sortable_name(field) @order_by[index_field] = direction.to_s.upcase unless index_field.nil? end |
#paginate(params) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/oss_active_record/search_request.rb', line 32 def paginate(params) rows = params[:per_page].to_i page = params[:page].to_i @params['start'] = (page - 1) * rows @params['rows'] = rows end |
#returns(fields) ⇒ Object
28 29 30 |
# File 'lib/oss_active_record/search_request.rb', line 28 def returns(fields) @params['returnedFields'] = fields.uniq end |
#with(field, value) ⇒ Object
18 19 20 21 |
# File 'lib/oss_active_record/search_request.rb', line 18 def with(field, value) index_field = @index_instance.find_field_name(field) filter index_field, value, false unless index_field.nil? end |
#without(field, value) ⇒ Object
23 24 25 26 |
# File 'lib/oss_active_record/search_request.rb', line 23 def without(field, value) index_field = @index_instance.find_field_name(field) filter index_field, value, true unless index_field.nil? end |