ruby-on-rails - 如何防止与 searchkick 和 word_start 的部分查询匹配

标签 ruby-on-rails elasticsearch searchkick

我确定有办法做到这一点,但我一定遗漏了一些东西。这是我的基本设置:

class Tag < ActiveRecord::Base 
     searchkick word_start: [:name]
end

当我这样搜索时:

Tag.search('advertising', fields:[{name: :word_start}])

一切都很好。但是,当查询包含多个单词时:

Tag.search('click to talk', fields:[{name: :word_start}])

我最终得到了一大堆不受欢迎的结果,即“玩具”、“工具”、“触摸”。大概是因为标记 'to' 匹配这些词的开头。我无法使用 text_start,因为我希望“广告”“移动广告” 匹配。理想情况下,我只想阻止查询的部分匹配,但允许在索引上进行部分匹配。

我试过引用:

Tag.search('"click to talk"', fields:[{name: :word_start}])

这似乎没有帮助。

最佳答案

使用默认的 :word,'advertising' 应该匹配 'mobile advertising'。由于 拼写错误,“点击通话”的不良结果可能会返回,请尝试将其设置为 false,看看它是否能消除干扰。

Tag.search("click to talk", fields: [:name], misspellings: false)

关于ruby-on-rails - 如何防止与 searchkick 和 word_start 的部分查询匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23400109/

相关文章:

mysql - 在 rails 中使用特定的 mysql 索引

ruby-on-rails - rails 、yml 和多行

hadoop - 无法启动 Nutch 爬行

ruby-on-rails - searchkick - 具有多个属性的自动完成

ruby-on-rails - rails searchkick错误:找不到字段[word_middle]的分析器[searchkick_word_middle_index]

ruby-on-rails - 在 Rails 3 中设置 session 超时

ruby-on-rails - ruby on rails 中的外键如何命名?

elasticsearch - 复制 Elasticsearch 主分片

django - 对于与ElasticSearch索引文本不完全匹配的查询,如何获得结果?

ruby-on-rails - Rails 4:安装elasticsearch和searchkick时出错