ここには 2 つの問題が考えられます。まず、「コンテンツ」フィールドが分析され、「ほとんどの従業員が評価している」という言葉は用語ではなく、3 つの用語であると推測しています。この場合、単一の用語として定義することは適切ではありません。
ただし、リストされているコンテンツが単一の用語であっても、2 つ目の問題として、用語間の距離が離れすぎて一致が得られないことがあります。mosa employee appreicata
との間の Damerau-Levenshtein 距離most employees appreciate
は 4 です (ちなみに、"Damerau-Levenshtein" の綴りでの私の平均的な最初のショットと正しい綴りの間のおおよその距離です)。Fuzzy Query は、4.0 の時点で、パフォーマンス上の制約と、2 を超える編集距離を処理することはできません。また、距離が大きくても通常は特に関係がないという前提があります。
あいまいな用語を使用してフレーズ クエリを実行する必要がある場合は、 を調べるか、一連の(特にと) をMultiPhraseQuery
組み合わせてニーズを満たす必要があります。SpanQueries
SpanMultiTermQueryWrapper
SpanNearQuery
SpanQuery[] clauses = new SpanQuery[3];
clauses[0] = new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("contents", "mosa")));
clauses[1] = new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("contents", "employee")));
clauses[2] = new SpanMultiTermQueryWrapper(new FuzzyQuery(new Term("contents", "appreicata")));
SpanNearQuery query = new SpanNearQuery(clauses, 0, true)
また、編集距離が 2 を超える個々の用語はないため、これはより効果的です。