2

searchkick を使用して Elasticsearch にインデックス付けされている Widget モデルがあるとします。

searchkick word: [:title], highlight: [:title], term_vector: true

そして、これらのドキュメントにインデックスを付けました:

{ title: "work with puppies" }
{ title: "work with sharks" }
{ title: "work with kittens" }
{ title: "shoot lasers at the moon" }

新しいテキストに対して「もっと似た」(MLT) クエリを実行しようとしています。

"work with lasers"

私の目標は、私のドキュメント コーパスでは一般的な「作業」よりも「レーザー」の方が専門的であるため、最高スコアの最後のドキュメントにヒットさせることです。

私はこれを試しました:

Widget.search query: { 
  mlt: {
    like_text: "work with lasers",
    min_term_freq: 1,
    boost_terms: 5,
    analyzer: 'searchkick_search2'
  } }

しかし、それは最高のスコアで一番上にある「work with ...」ドキュメントを返します。

key/val { stopwords: ['work', 'with'] } も入れてみましたが、結果は0です。

searchkick/elasticsearch を取得して、最高スコアの特殊な用語を含むドキュメントを返してもらい、一般的に見られる用語のみに一致するドキュメントを軽視する方法はありますか?

4

1 に答える 1