我正在搜索包含两个词的文档"一个两个"在不同的领域(例如标题,内容等)。 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我只得到那些文件。
有没有办法增加像多个匹配的东西?
感谢。
答案 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);