Search code examples
ruby-on-railsrubyelasticsearchsearchkick

Searchkick results are not relevant


I have a problem with a relevant search. Results of following request are very strange:

Candidate.search('martin', fields: [:first_name, :last_name], 
                           match: :word_start, misspellings: false).map(&:name)


["Kautzer Martina",
 "Funk Martin",
 "Jaskolski Martin",
 "Gutmann Martine",
 "Wiegand Martina",
 "Schueller Martin",
 "Dooley Martin",
 "Stiedemann Martine",
 "Bartell Martina",
 "Gerlach Martine",
 "Green Martina",
 "Lang Martine",
 "Legros Martine",
 "Ernser Martina",
 "Boehm Martina",
 "Green Martine",
 "Nolan Martin",
 "Schmidt Martin",
 "Hoppe Martin",
 "Macejkovic Martine",
 "Emard Martine"]

Why Martina is going earlier than Martin?

Searckick config:

searchkick language: %w(German English), word_start: [:first_name, :last_name]

Solution

  • Searchkick 1.4 fixes this issue. There's even a test case dedicated to this question :)