我确信有办法做到这一点,但我一定错过了一些东西。这是我的基本设置:
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}])
我最终得到了一大堆不受欢迎的结果,即'Toys'、'Tools'、'Touch'。大概是因为标记“to”与这些单词的开头匹配。我不能使用text_start
,因为我希望“广告”匹配“移动广告”。理想情况下,我只想防止查询的部分匹配,但允许索引上的部分匹配。
我试过引号:
Tag.search('"click to talk"', fields:[{name: :word_start}])
它似乎没有帮助。