Phrasequery进行研究

时间:2016-09-16 15:22:32

标签: python lucene

无论如何使用带有python的phrasequery? 直到现在我使用的是解析器,但我想知道如何使用phrasequery。

parser = QueryParser(Version.LUCENE_CURRENT, "contents",
                        analyzer)
parser.setDefaultOperator(QueryParser.Operator.AND)
query = parser.parse(command)
    scoreDocs = searcher.search(query, 10000).scoreDocs

1 个答案:

答案 0 :(得分:0)

首先,您应该了解当您删除QueryParser时,会丢失分析器。 PhraseQuery不会像QueryParser一样为您分析,因此您可以对您的短语进行标记化和规范化以匹配索引时间分析。你可能最好坚持使用解析器。

也就是说,手动构建PhraseQuery看起来像这样:

query = PhraseQuery()
query.add(Term("contents", "lorem"))
query.add(Term("contents", "ipsum"))
query.add(Term("contents", "sit"))
query.add(Term("contents", "amet"))

您可以使用setSlop为查询设置slop。

您还可以指定每个字词的位置。例如,如果" sit"在我的索引中是一个停用词,我可能会做类似的事情:

query = PhraseQuery()
query.add(Term("contents", "lorem"), 0)
query.add(Term("contents", "ipsum"), 1)
query.add(Term("contents", "amet"), 3)