Searchkick - Elasticsearch - 用下划线代替空格

问题描述:

名,我们有标签例如:Searchkick - Elasticsearch - 用下划线代替空格

hello_my_name_is 

Tag.search "hello" 
=> [] 

但是,试图寻找hello与searchkick/elasticsearch我们没有得到结果什么时候。我们明确需要搜索hello_my_name_is以获取它。

Tag.search "hello_my_name_is" 
=> [{name: "hello_my_name_is"...}] 

有没有办法解决这个问题?

ElasticSearch关心您正在执行的搜索类型。在这种情况下,默认值是整个单词的匹配。解决问题的一种方法是使用searchkick gem的partial matches功能。

Tag.search "hello", fields: [:name], match: :word_start 

在做出更改后,请不要忘记重新索引。

+0

我结束了使用''':word_middle''' – Philip