Ich benutze Apache Lucene 6.6.0 und ich versuche, Begriffe aus der Suchanfrage zu extrahieren. Die aktuelle Version von Code wie folgt aussieht:Apache Lucene createWeight() für Wildcard-Abfrage
Query parsedQuery = new AnalyzingQueryParser("", analyzer).parse(query);
Weight weight = parsedQuery.createWeight(searcher, false);
Set<Term> terms = new HashSet<>();
weight.extractTerms(terms);
Es ziemlich gut funktioniert, aber in letzter Zeit bemerkte ich, dass es nicht mit Wildcards unterstützt das Abfragen (das heißt *
Zeichen). Wenn die Abfrage Platzhalter (n) enthält, dann bekomme ich eine Ausnahme:
java.lang.UnsupportedOperationException: Abfrage -ID: 123 * 456 nicht implementiert createWeight bei org.apache.lucene.search.Query. createWeight (Query.java:66) bei org.apache.lucene.search.IndexSearcher.createWeight (IndexSearcher.java:751) bei org.apache.lucene.search.BooleanWeight. (BooleanWeight.java:60) bei org.apache.lucene.search.BooleanQuery.createWeight (BooleanQuery.java:225)
Gibt es eine Möglichkeit, createWeight()
mit wildcarded Abfragen zu verwenden? Oder gibt es eine andere Möglichkeit, Suchbegriffe aus der Abfrage ohne createWeight()
zu extrahieren?
Nun, es sieht für mich wie eine Art Schwarzmagie aus, aber es hat tatsächlich funktioniert. Vielen Dank! –
@DmytroTitov, froh, dass es geholfen hat! Stimme mit dir überein: das ist nicht einfach. –