【发布时间】:2017-06-22 15:24:58
【问题描述】:
我正在尝试通过部分匹配获取多短语查询。根据JavaDoc为MultiPhraseQuery:
PhraseQuery 的通用版本,可以在同一位置添加多个术语,这些术语被视为析取 (OR)。要使用此类搜索短语“Microsoft app*”,首先创建一个 Builder 并在术语“microsoft”上使用 MultiPhraseQuery.Builder.add(Term)(假设为小写分析),然后找到所有具有“app”的术语使用 LeafReader.terms(String) 作为前缀,寻找“应用程序”,然后迭代并收集术语,直到不再有该前缀,最后使用 MultiPhraseQuery.Builder.add(Term[]) 添加它们。 MultiPhraseQuery.Builder.build() 返回完全构造(且不可变)的 MultiPhraseQuery。
https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/MultiPhraseQuery.html
我正在努力解决它所说的部分:
...使用 LeafReader.terms(String) 查找所有以“app”为前缀的术语,寻找“app”然后迭代并收集术语,直到不再有该前缀...
如何寻找那里的条款? LeafReader.terms(String) 给你Terms,它有一个iterator 方法给你TermsEnum,你可以用它seek。我只是不确定如何使用它来提取匹配项?
【问题讨论】: