1

この文字列は次のように索引付けされています。

私のクエリは次のとおりです

クエリを実行しても結果が得られません。クエリに「ガベージ」テキストが少し含まれている場合、どうすれば結果を取得できますか?

Django、Haystack、ElasticSearch を使用しています。

4

2 に答える 2

3

デフォルトの演算子「or」を使用して「一致」クエリを使用すると、いずれかの単語が一致するヒットが取得されますが、多くの単語が一致するヒットは、一致する単語がほとんどないヒットよりも上位にランク付けされます。

http://www.elasticsearch.org/guide/reference/query-dsl/match-query.html

しかし、その正確なフレーズだけを一致させたいが、どちらかの端に追加のテキストを許可したいという場合は、正確にそれを行うことができるかどうかはわかりません.

フレーズの完全一致の要件を緩和できる場合の 1 つのオプションは、シングル トークン フィルターを使用してドキュメント (およびクエリ) を分析することです。

http://www.elasticsearch.org/guide/reference/index-modules/analysis/shingle-tokenfilter.html

次に、「or」演算子を使用した一致クエリは、単語のペア、トリプレット、クワッドなどで動作します (フィルター構成によって異なります)。シングル サイズをちょうど 2 または 3 に設定すると、(たまたま) クエリと同じ単語を多く含むドキュメントのスコアが高くなる可能性は低くなります。

または、slop を使用したフレーズ クエリを使用することもできます (上記の一致クエリ ページの下部を参照)。

ただし、これらのアプローチは両方とも、挿入とプレフィックス/サフィックスを許可します。

于 2013-01-17T11:54:27.203 に答える
0

Elasticsearch には、テキストのフラグメントに基づいてクエリを生成できる非常に強力なMore Like This Queryがあります。

于 2013-01-16T14:44:35.717 に答える