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では、「広告」は「モバイル広告」と一致する必要があります。が原因で、「クリックして話す」の望ましくない結果が返される可能性があります。これmisspellingsを に設定しfalseて、ノイズがカットされるかどうかを確認してください。

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