Ich versuche, mit einer teilweisen Übereinstimmung eine mehrsprachige Abfrage zu erhalten. Nach dem JavaDoc
für MultiPhraseQuery
:Wie suche ich nach einem Begriff mit einem Lucene IndexReader?
Eine verallgemeinerte Version von PhraseQuery, mit der Möglichkeit, mehr als ein Begriff in der gleichen Position des Hinzufügens, der als Disjunktion behandelt werden (OR). Wenn Sie diese Klasse verwenden möchten, um nach dem Ausdruck "Microsoft App *" zu suchen, erstellen Sie zuerst einen Builder und verwenden Sie MultiPhraseQuery.Builder.add (Term) für den Begriff "microsoft" (unter der Annahme von Kleinbuchstaben) und suchen Sie dann alle Begriffe mit "app" Präfix mit LeafReader.terms (String), Suche nach "App" dann Iterieren und Sammeln von Begriffen, bis nicht mehr dieses Präfix, und schließlich verwenden MultiPhraseQuery.Builder.add (Term []), um sie hinzuzufügen. MultiPhraseQuery.Builder.build() gibt das vollständig erstellte (und unveränderbare) MultiPhraseQuery zurück.
https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/search/MultiPhraseQuery.html
Ich bin mit dem Teil zu kämpfen, wo es heißt:
... finden Sie alle Begriffe, die "App" als Präfix LeafReader.terms (String) haben, suchen zu "app" dann iterieren und sammeln Begriffe, bis es nicht mehr das Präfix ...
Wie sucht man dort drüben Begriffe? LeafReader.terms(String)
gibt Ihnen Terms
, die eine iterator
Methode hat, die Sie TermsEnum
gibt, die Sie seek
mit. Ich bin nur nicht sicher, wie extrahieren übereinstimmende Begriffe das verwenden?