Commit 88349791b115f77578135303a6306b58dfca8907
Exists in
master
and in
21 other branches
Merge pull request #531 from sharshenov/dynamic-synonyms
Allow to pass synonyms as Proc
Showing
2 changed files
with
7 additions
and
0 deletions
Show diff stats
README.md
@@ -269,6 +269,8 @@ end | @@ -269,6 +269,8 @@ end | ||
269 | ```ruby | 269 | ```ruby |
270 | class Product < ActiveRecord::Base | 270 | class Product < ActiveRecord::Base |
271 | searchkick synonyms: [["scallion", "green onion"], ["qtip", "cotton swab"]] | 271 | searchkick synonyms: [["scallion", "green onion"], ["qtip", "cotton swab"]] |
272 | + # or | ||
273 | + # searchkick synonyms: Proc.new { CSV.read("/some/path/synonyms.csv") } | ||
272 | end | 274 | end |
273 | ``` | 275 | ``` |
274 | 276 |
lib/searchkick/index.rb
@@ -349,6 +349,11 @@ module Searchkick | @@ -349,6 +349,11 @@ module Searchkick | ||
349 | 349 | ||
350 | # synonyms | 350 | # synonyms |
351 | synonyms = options[:synonyms] || [] | 351 | synonyms = options[:synonyms] || [] |
352 | + | ||
353 | + if synonyms.respond_to?(:call) | ||
354 | + synonyms = synonyms.call | ||
355 | + end | ||
356 | + | ||
352 | if synonyms.any? | 357 | if synonyms.any? |
353 | settings[:analysis][:filter][:searchkick_synonym] = { | 358 | settings[:analysis][:filter][:searchkick_synonym] = { |
354 | type: "synonym", | 359 | type: "synonym", |