我确信有办法做到这一点,但我必须遗漏一些东西.这是我的基本设置:
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}])
它似乎没有帮助.
最佳答案 使用默认:字词,“广告”应与“移动广告”匹配.由于拼写错误,“点击通话”的不良结果可能会被返回,尝试将其设置为false并查看是否可以消除噪音.
Tag.search("click to talk", fields: [:name], misspellings: false)