无论如何使用带有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
答案 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)