class Skala::PrimoAdapter::Search::ResultTransformation::FixPrimoFacetsBugs
Public Instance Methods
call()
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb, line 7 def call # please do not change order of the calls below, because they depend (in parts) on each other fix_selected_facets_occur_slightly_different fix_selected_facet_value_is_missing fix_creationdate_facet_values_out_of_selected_range # case 1 - there is no facet at all #transformation.search_request.facets.each do |_requested_facet| # binding.pry #end =begin request[:body]["facets"].try do |_requested_facets| _requested_facets.each do |_facet_name, _requested_facet| unless target["facets"][_facet_name] if _requested_facet.keys.include?("terms") target["facets"][_facet_name] = { "_type" => "terms", "terms" => [] } end end end end =end # case 2 - there is a facet, but the requested facet is not included =begin deep_locate( request, -> (_key, _value, _) do _key == "match" && _value.keys.any? do |__key| __key.start_with?("facet") end end ) .presence .try do |_facet_queries| _facet_queries.each do |_facet_query| _facet_query["match"].try do |_match_query| target["facets"][_match_query.keys.first]["terms"].try do |_target_facet_terms| if _target_facet_terms.none? { |_term| _term["term"] == _match_query.values.first } _target_facet_terms << { "term" => _match_query.values.first, "count" => 1 } end end end end end =end end
Private Instance Methods
fix_creationdate_facet_values_out_of_selected_range()
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb, line 61 def fix_creationdate_facet_values_out_of_selected_range creationdate_facet_query = transformation.search_request.facet_queries.find do |_facet_query| _facet_query.field == "facet_creationdate" end creationdate_facet = target.facets.find do |_target_facet| _target_facet.field == "facet_creationdate" end if creationdate_facet_query creationdate_facet.entries.select! do |_entry| _entry.key.to_i >= creationdate_facet_query.gte.to_i && _entry.key.to_i <= creationdate_facet_query.lte.to_i end end end
fix_selected_facet_value_is_missing()
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb, line 78 def fix_selected_facet_value_is_missing transformation.search_request.facet_queries.each do |_facet_query| target_facet = target.facets.find { |_facet| _facet.field == _facet_query.field } if _facet_query.type.to_s == "match" && target_facet && target_facet.type.to_s == "terms" if target_facet.terms.none? { |_term| _term.term == _facet_query.query } term_class = target_facet.terms.first.class target_facet.terms.push term_class.new( count: target.total_hits, term: _facet_query.query ) end end end end
fix_selected_facets_occur_slightly_different()
click to toggle source
# File lib/skala/primo_adapter/search/result_transformation/fix_primo_facets_bugs.rb, line 95 def fix_selected_facets_occur_slightly_different transformation.search_request.facet_queries.each do |_facet_query| target_facet = target.facets.find { |_facet| _facet.field == _facet_query.field } if _facet_query.type.to_s == "match" && target_facet && target_facet.type.to_s == "terms" target_facet.terms.each do |_target_facet_term| if _target_facet_term.term.downcase.strip == _facet_query.query.downcase _target_facet_term.term = _facet_query.query end end end end end