0

我正在搜索在不同字段(例如标题、内容等)中包含两个术语“一二”的文档。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”)的所有文档,并且包含两者的文档应该获得更高的分数。当我使用“一加二”或“一二”之类的查询时,我只得到那些文档。

有没有办法提升多场比赛之类的东西?

谢谢。

4

1 回答 1

0

如果您正在寻找某个值“一二”的提升,您可以使用 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 回答