Elastic Search (Elastic.co) の関連性フィードバックを実装しようとしています。
私は、boolean must_not の場合のように否定的な用語を除外せずに、否定的な用語を割引するという考えで、肯定的な用語と否定的な用語の指定を可能にするクエリのブースティングを認識しています。
ただし、肯定的な用語と否定的な用語の両方で、階層化されたブーストを達成しようとしています。
つまり、ビニングされたポジティブ ワードとネガティブ ワードのリストを取得し、それぞれが独自のクエリ ワードを含む、異なるポジティブ ブースト層とネガティブ ブースト層が存在するようなクエリを生成したいと考えています。
(疑似クエリ)のようなもの:
query{
{
terms: [very relevant terms]
pos_boost: 3
}
{
terms: [relevant terms]
pos_boost: 2
}
{
terms: [irrelevant terms]
neg_boost: 0.6
}
{
terms: [very irrelevant terms]
neg_boost: 0.3
}
}
私の質問は、ネストされたブースティングクエリでこれを達成できるかどうか、または複数のshould句を使用したほうがよいかどうかです。
私の懸念は、bool クエリの should 句で 0.2 のブーストを行っても、ドキュメントのスコアがプラスに増加するかどうかわからないことです。これは、スコアを増加させるのではなく、ドキュメントを割引したいためです。 .
クエリのブースティングでは、肯定的な用語の重み付けの程度を制御できないことが懸念されます。
他の実装に関するヘルプや提案をいただければ幸いです。(私が本当にやりたかったのは、関連するドキュメントの言語モデルを作成し、それを使用してランク付けすることでしたが、エラスティックで簡単に実現する方法がわかりません。)