0

異なるフィールド (タイトル、コンテンツなど) に「one two」という 2 つの用語を含むドキュメントを検索しています。PyLucene での例:

query = "one two"
clauses = []
for field in fields:
    clauses.append(BooleanClause.Occur.SHOULD)

query = MultiFieldQueryParser.parse(Version.LUCENE_CURRENT, query, fields, clauses, analyzer)

用語 ("one" または "two") および ("one" および "two") を含むすべてのドキュメントを取得したいと考えており、両方を含むドキュメントはより高いスコアを取得する必要があります。"one and two" や "one two"~n などのクエリを使用すると、そのドキュメントのみが取得されます。

複数の試合のようなものを後押しする方法はありますか?

ありがとう。

4

1 に答える 1

0

特定の値「one two」によるブーストを探している場合は、SpanNearQuery が提供する近接クエリ ブーストを使用できます。

http://lucene.apache.org/core/4_6_0/core/org/apache/lucene/search/spans/SpanNearQuery.html

たとえば、Java では次のようになります。

SpanTermQuery[] spanQueryClauses = new SpanTermQuery[terms.length];
for (int i = 0; i < terms.length; i++) {
    spanQueryClauses[i] = new SpanTermQuery(terms[i]);
}
SpanNearQuery spanNearQuery = new SpanNearQuery(
              spanQueryClauses, slop, true);
spanNearQuery.setBoost(2.0f);
于 2014-10-18T11:49:54.840 に答える