Commit 0f5dd5af62f706d42e919584a94edaaf93096de9
1 parent
587c225e
Exists in
master
and in
19 other branches
Moved conversions to own function
Showing
1 changed file
with
28 additions
and
25 deletions
Show diff stats
lib/searchkick/query.rb
@@ -219,8 +219,6 @@ module Searchkick | @@ -219,8 +219,6 @@ module Searchkick | ||
219 | # model and eager loading | 219 | # model and eager loading |
220 | load = options[:load].nil? ? true : options[:load] | 220 | load = options[:load].nil? ? true : options[:load] |
221 | 221 | ||
222 | - conversions_fields = Array(options[:conversions] || searchkick_options[:conversions]).map(&:to_s) | ||
223 | - | ||
224 | all = term == "*" | 222 | all = term == "*" |
225 | 223 | ||
226 | @json = options[:body] | 224 | @json = options[:body] |
@@ -397,29 +395,7 @@ module Searchkick | @@ -397,29 +395,7 @@ module Searchkick | ||
397 | } | 395 | } |
398 | } | 396 | } |
399 | 397 | ||
400 | - if conversions_fields.present? && options[:conversions] != false | ||
401 | - conversions_fields.each do |conversions_field| | ||
402 | - should << { | ||
403 | - nested: { | ||
404 | - path: conversions_field, | ||
405 | - score_mode: "sum", | ||
406 | - query: { | ||
407 | - function_score: { | ||
408 | - boost_mode: "replace", | ||
409 | - query: { | ||
410 | - match: { | ||
411 | - "#{conversions_field}.query" => options[:conversions_term] || term | ||
412 | - } | ||
413 | - }, | ||
414 | - field_value_factor: { | ||
415 | - field: "#{conversions_field}.count" | ||
416 | - } | ||
417 | - } | ||
418 | - } | ||
419 | - } | ||
420 | - } | ||
421 | - end | ||
422 | - end | 398 | + set_conversions(should) |
423 | 399 | ||
424 | query = payload | 400 | query = payload |
425 | end | 401 | end |
@@ -561,6 +537,33 @@ module Searchkick | @@ -561,6 +537,33 @@ module Searchkick | ||
561 | [boost_fields, fields] | 537 | [boost_fields, fields] |
562 | end | 538 | end |
563 | 539 | ||
540 | + def set_conversions(should) | ||
541 | + conversions_fields = Array(options[:conversions] || searchkick_options[:conversions]).map(&:to_s) | ||
542 | + if conversions_fields.present? && options[:conversions] != false | ||
543 | + conversions_fields.each do |conversions_field| | ||
544 | + should << { | ||
545 | + nested: { | ||
546 | + path: conversions_field, | ||
547 | + score_mode: "sum", | ||
548 | + query: { | ||
549 | + function_score: { | ||
550 | + boost_mode: "replace", | ||
551 | + query: { | ||
552 | + match: { | ||
553 | + "#{conversions_field}.query" => options[:conversions_term] || term | ||
554 | + } | ||
555 | + }, | ||
556 | + field_value_factor: { | ||
557 | + field: "#{conversions_field}.count" | ||
558 | + } | ||
559 | + } | ||
560 | + } | ||
561 | + } | ||
562 | + } | ||
563 | + end | ||
564 | + end | ||
565 | + end | ||
566 | + | ||
564 | def set_boost_by_distance(custom_filters) | 567 | def set_boost_by_distance(custom_filters) |
565 | boost_by_distance = options[:boost_by_distance] || {} | 568 | boost_by_distance = options[:boost_by_distance] || {} |
566 | 569 |