Lucene:在找到两个任期时增加得分

时间:2014-10-02 06:24:22

标签: lucene pylucene

我正在搜索包含两个词的文档"一个两个"在不同的领域(例如标题,内容等)。 PyLucene中的一个例子:

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

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

我想获得包含该术语的所有文件("一个"或"两个")和("一个"和"两个&# 34;)和包含两者的文件应得到更高的分数。当我使用像"一个和两个"或者"一两个" ~n我只得到那些文件。

有没有办法增加像多个匹配的东西?

感谢。

1 个答案:

答案 0 :(得分: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);