Class: SupplejackApi::ConceptSearch
- Defined in:
- app/models/supplejack_api/concept_search.rb
Instance Method Summary collapse
- #field_list ⇒ Object
- #group_list ⇒ Object
-
#initialize(options = {}) ⇒ ConceptSearch
constructor
A new instance of ConceptSearch.
-
#query_fields ⇒ Object
rubocop:enable Metrics/MethodLength.
-
#search_builder ⇒ Object
FIXME: make me smaller!.
Constructor Details
#initialize(options = {}) ⇒ ConceptSearch
Returns a new instance of ConceptSearch.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/models/supplejack_api/concept_search.rb', line 11 def initialize( = {}) @options = .dup @options.reverse_merge!( and: {}, or: {}, without: {}, page: 1, per_page: 20, sort: nil, direction: 'desc', fields: ConceptSchema.model_fields.keys.join(','), debug: nil ) end |
Instance Method Details
#field_list ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/models/supplejack_api/concept_search.rb', line 66 def field_list return @field_list if @field_list model_fields = ConceptSchema.model_fields.dup valid_fields = model_fields.keep_if { |_key, field| field.try(:store).nil? } @field_list = [:fields].split(',').map { |f| f.strip.tr(':', '_').to_sym } @field_list.keep_if do |f| valid_fields.include?(f) end @field_list end |
#group_list ⇒ Object
79 80 81 82 83 84 |
# File 'app/models/supplejack_api/concept_search.rb', line 79 def group_list return @group_list if @group_list @group_list = [:fields].split(',').map { |f| f.strip.to_sym } @group_list.keep_if { |f| ConceptSchema.groups.keys.include?(f) } @group_list end |
#query_fields ⇒ Object
rubocop:enable Metrics/MethodLength
61 62 63 64 |
# File 'app/models/supplejack_api/concept_search.rb', line 61 def query_fields query_fields_list = super query_fields_list += [:name, :label] if (query_fields_list && [:name, :label]).present? end |
#search_builder ⇒ Object
FIXME: make me smaller!
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/models/supplejack_api/concept_search.rb', line 27 def search_builder @search_builder ||= Sunspot.new_search(SupplejackApi::Concept) do spellcheck collate: true, only_more_popular: true if [:suggest] [:without].each do |name, values| values = values.split(',') values.each do |value| without(name, to_proper_value(name, value)) end end if [:geo_bbox] coords = [:geo_bbox].split(',').map(&:to_f) with(:lat_lng).in_bounding_box([coords[2], coords[1]], [coords[0], coords[3]]) end adjust_solr_params do |params| if [:solr_query].present? params[:q] ||= '' params['q.alt'] = [:solr_query] params[:defType] = 'dismax' end end order_by(sort, direction) if [:sort].present? paginate page: page, per_page: per_page end @search_builder.build(&build_conditions) @search_builder end |