J'essaie d'obtenir une requête multi-phrasée avec une correspondance partielle. Selon le JavaDoc
pour MultiPhraseQuery
:Comment chercher un terme en utilisant un IndexReader de Lucene?
une version généralisée de PhraseQuery, avec la possibilité d'ajouter plus d'un terme à la même position qui sont traités comme une disjonction (OU). Pour utiliser cette classe pour rechercher l'expression "Microsoft app *" créez d'abord un Builder et utilisez MultiPhraseQuery.Builder.add (Term) sur le terme "microsoft" (en supposant une analyse en minuscules), puis trouvez tous les termes qui ont "app" comme préfixe en utilisant LeafReader.terms (String), en cherchant à "app" puis en itérant et en collectant des termes jusqu'à ce qu'il n'y ait plus ce préfixe, et finalement utilisez MultiPhraseQuery.Builder.add (Term []) pour les ajouter. MultiPhraseQuery.Builder.build() renvoie le MultiPhraseQuery entièrement construit (et immuable).
https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/MultiPhraseQuery.html
Je me bats avec la partie où il est dit:
... trouver tous les termes qui ont "app" comme préfixe à l'aide LeafReader.terms (String), recherche à "app" puis itération et la collecte des termes jusqu'à ce qu'il n'y a plus ce préfixe ...
Comment cherche-t-on là-bas des termes? LeafReader.terms(String)
vous donne Terms
qui a une méthode iterator
qui vous donne TermsEnum
que vous pouvez seek
avec. Je ne suis pas sûr de savoir comment extraire les termes correspondants en utilisant cela?