Skip to content

Commit 8fbd950

Browse files
committed
Added support for hash to conversions_v2 option [skip ci]
1 parent 0e7fa01 commit 8fbd950

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

lib/searchkick/query.rb

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -660,27 +660,34 @@ def set_conversions
660660
end
661661

662662
def set_conversions_v2
663+
conversions_v2 = options[:conversions_v2]
664+
return [] if conversions_v2.nil? && !searchkick_options[:conversions_v2]
665+
return [] if conversions_v2 == false
666+
667+
# disable if searchkick_options[:conversions] to make it easy to upgrade without downtime
668+
return [] if conversions_v2.nil? && searchkick_options[:conversions]
669+
670+
unless conversions_v2.is_a?(Hash)
671+
conversions_v2 = {field: conversions_v2}
672+
end
673+
663674
conversions_fields =
664-
case options[:conversions_v2]
675+
case conversions_v2[:field]
665676
when true, nil
666-
searchkick_options[:conversions_v2]
677+
Array(searchkick_options[:conversions_v2]).map(&:to_s)
667678
else
668-
options[:conversions_v2]
679+
[conversions_v2[:field].to_s]
669680
end
670681

671-
conversions_fields = Array(conversions_fields).map(&:to_s)
672-
# disable if searchkick_options[:conversions] to make it easy to upgrade without downtime
673-
if conversions_fields.present? && options[:conversions_v2] != false && !(options[:conversions_v2].nil? && searchkick_options[:conversions])
674-
conversions_fields.map do |conversions_field|
675-
{
676-
rank_feature: {
677-
field: "#{conversions_field}.#{(options[:conversions_term] || term).to_s.downcase.gsub(".", "*")}",
678-
linear: {}
679-
}
682+
conversions_term = conversions_v2[:term] || options[:conversions_term] || term
683+
684+
conversions_fields.map do |conversions_field|
685+
{
686+
rank_feature: {
687+
field: "#{conversions_field}.#{conversions_term.to_s.downcase.gsub(".", "*")}",
688+
linear: {}
680689
}
681-
end
682-
else
683-
[]
690+
}
684691
end
685692
end
686693

test/conversions_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_v2_space
9595
{name: "Tomato B", conversions_v2: {"tomato juice" => 2}},
9696
{name: "Tomato C", conversions_v2: {"tomato juice" => 3}}
9797
]
98-
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: true, conversions_term: "tomato juice"
98+
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: {term: "tomato juice"}
9999
end
100100

101101
def test_v2_dot
@@ -104,7 +104,7 @@ def test_v2_dot
104104
{name: "Tomato B", conversions_v2: {"tomato.juice" => 2}},
105105
{name: "Tomato C", conversions_v2: {"tomato.juice" => 3}}
106106
]
107-
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: true, conversions_term: "tomato.juice"
107+
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: {term: "tomato.juice"}
108108
end
109109

110110
def test_v2_unicode
@@ -113,7 +113,7 @@ def test_v2_unicode
113113
{name: "Tomato B", conversions_v2: {"喰らう" => 2}},
114114
{name: "Tomato C", conversions_v2: {"喰らう" => 3}}
115115
]
116-
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: true, conversions_term: "喰らう"
116+
assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], conversions_v2: {term: "喰らう"}
117117
end
118118

119119
def test_v2_score

0 commit comments

Comments
 (0)