class Solr::Query::Request::EdismaxAdapter
Constants
- EDISMAX_ADDITIVE_BOOST_FUNCTION
- EDISMAX_MULTIPLICATIVE_BOOST_FUNCTION
- EDISMAX_PHRASE_BOOST
- EDISMAX_PHRASE_SLOP
- EDISMAX_QUERY_FIELDS
- FIELD_LIST
- FILTER_QUERY
- JSON_FACET
- QUERY_OPERATOR
- RERANK_QUERY
- SOLR_INFINITY
Attributes
request[R]
Public Class Methods
new(request)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 21 def initialize(request) @request = request end
Public Instance Methods
to_h()
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 25 def to_h solr_params = { q: request.search_term, defType: :edismax } solr_params = add_query_fields(solr_params) solr_params = add_field_list(solr_params) solr_params = add_filters(solr_params) solr_params = add_facets(solr_params) solr_params = add_boosting(solr_params) solr_params = add_grouping(solr_params) solr_params = add_sorting(solr_params) solr_params = add_debug(solr_params) solr_params = add_spellcheck(solr_params) solr_params = add_rerank_query(solr_params) solr_params = add_phrase_slop(solr_params) solr_params = add_query_operator(solr_params) solr_params end
Private Instance Methods
add_additive_boost_functions(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 69 def add_additive_boost_functions(solr_params) additive_boosts = request.boosting.additive_boost_functions.map(&:to_solr_s) if additive_boosts.any? solr_params[EDISMAX_ADDITIVE_BOOST_FUNCTION] = additive_boosts end solr_params end
add_boosting(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 62 def add_boosting(solr_params) return solr_params unless request.boosting solr_params = add_additive_boost_functions(solr_params) solr_params = add_multiplicative_boost_functions(solr_params) add_phrase_boosts(solr_params) end
add_debug(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 128 def add_debug(solr_params) solr_params[:debug] = debug_mode? solr_params end
add_facets(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 56 def add_facets(solr_params) return solr_params if Array(request.facets).empty? solr_params[JSON_FACET] = request.facets.map(&:to_solr_h).reduce(&:merge).to_json solr_params end
add_field_list(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 121 def add_field_list(solr_params) request.field_list.fields << :score if debug_mode? field_list = request.field_list.to_solr_s solr_params[FIELD_LIST] = field_list solr_params end
add_filters(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 50 def add_filters(solr_params) filters = request.filters.map(&:to_solr_s) solr_params[FILTER_QUERY] = filters solr_params end
add_grouping(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 103 def add_grouping(solr_params) return solr_params if request.grouping.empty? group_info = { 'group' => true, 'group.format' => 'grouped', 'group.limit' => request.grouping.limit, 'group.field' => solarize_field(request.grouping.field) } solr_params.merge(group_info) end
add_multiplicative_boost_functions(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 77 def add_multiplicative_boost_functions(solr_params) multiplicative_boosts = request.boosting.multiplicative_boost_functions.map(&:to_solr_s) if multiplicative_boosts.any? solr_params[EDISMAX_MULTIPLICATIVE_BOOST_FUNCTION] = multiplicative_boosts # https://stackoverflow.com/questions/47025453/ maybe_add_spatial_fields(solr_params, request.boosting.spatial_boost) else solr_params end end
add_phrase_boosts(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 88 def add_phrase_boosts(solr_params) solr_phrase_boosts = request.boosting.phrase_boosts.map(&:to_solr_s) if solr_phrase_boosts.any? solr_params[EDISMAX_PHRASE_BOOST] = solr_phrase_boosts end solr_params end
add_phrase_slop(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 148 def add_phrase_slop(solr_params) return solr_params unless request.phrase_slop solr_params[EDISMAX_PHRASE_SLOP] = request.phrase_slop solr_params end
add_query_fields(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 44 def add_query_fields(solr_params) query_fields = request.query_fields.map(&:to_solr_s) solr_params[EDISMAX_QUERY_FIELDS] = query_fields solr_params end
add_query_operator(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 154 def add_query_operator(solr_params) return solr_params unless request.query_operator solr_params[QUERY_OPERATOR] = request.query_operator solr_params end
add_rerank_query(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 141 def add_rerank_query(solr_params) return solr_params unless request.limit_docs_by_field rerank_query = request.limit_docs_by_field.to_solr_s solr_params[RERANK_QUERY] = rerank_query solr_params end
add_sorting(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 114 def add_sorting(solr_params) return solr_params if request.sorting.empty? solr_sorting = request.sorting.fields.map(&:to_solr_s).join(', ') solr_params[:sort] = solr_sorting solr_params end
add_spellcheck(solr_params)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 137 def add_spellcheck(solr_params) solr_params.merge(request.spellcheck.to_h) end
debug_mode?()
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 133 def debug_mode? request.debug_mode end
maybe_add_spatial_fields(solr_params, geodist_function)
click to toggle source
# File lib/solr/query/request/edismax_adapter.rb, line 96 def maybe_add_spatial_fields(solr_params, geodist_function) if geodist_function solr_params.merge!(pt: geodist_function.latlng, sfield: geodist_function.sfield) end solr_params end