4

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

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}])

它似乎没有帮助。

4

1 回答 1

2

默认情况下:word,“广告”应与“移动广告”匹配。'click to talk' 的不良结果可能会因为 被返回misspellings,请尝试将其设置为false并查看它是否可以消除噪音。

Tag.search("click to talk", fields: [:name], misspellings: false)
于 2014-06-19T04:46:54.563 回答