我正在嘗試使用部分匹配來獲取多詞性查詢。根據JavaDoc
爲MultiPhraseQuery
:如何使用Lucene IndexReader查找術語?
一般化版本PhraseQuery的,與在該被視爲一個析取(OR)的相同位置添加超過一個術語的可能性。要使用此類搜索短語「Microsoft應用程序*」,首先創建一個構建器並使用術語「microsoft」(假設爲小寫分析)的MultiPhraseQuery.Builder.add(Term),然後找到所有具有「app」的術語作爲前綴使用LeafReader.terms(字符串),尋求「應用程序」,然後迭代和收集條款,直到不再有該前綴,並最終使用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(字符串)的所有條款,尋求到「應用程序」,然後迭代和收集條款,直到不再有那個前綴...
如何尋找那裏的條款? LeafReader.terms(String)
給你Terms
其中有一個iterator
方法,給你TermsEnum
你可以seek
與。我只是不確定如何使用它提取匹配的術語?