Frage

Meine Lucene Anfragen werden in der Regel von einem Bündel von AND kombiniert Feldern existieren. Ist es möglich, die abgefragten Felder aus dem Abfrage-Objekt wieder zu bekommen?

Keine korrekte Lösung

Andere Tipps

Meinen Sie die Begriffe und die Feldnamen zu extrahieren? Da Sie bereits wissen, dass Sie eine BooleanQuery Handhabung, um die Felder zu extrahieren Sie einfach die BooleanClause Array von BooleanQuery.getClauses () zurückgegeben laufen kann, schreiben jede Klausel zu seiner Basis Abfrage (Query.rewrite) und gelten rekursiv, bis Sie ein Termquery haben an den Händen.

Wenn Sie Termextraktion wollte, bin ich über Lucene.NET nicht sicher, aber in Java Lucene können Sie org.apache.lucene.search.highlight.QueryTermExtractor verwenden; geben Sie eine (neu geschrieben) Abfrage zu einem seiner getTerms Überlastungen und eine Reihe von WeightedTerms erhalten.

Soweit ich mich erinnere, die Nachteile dieser Technik zu verwenden sind:

  • Da es intern einen Begriff verwendet gesetzt, es wird nicht mehrere Instanzen des gleichen Token verarbeiten, zum Beispiel „Traum in einem Traum“
  • Es unterstützt nur Basisabfragetypen (Termquery, BooleanQuery und andere Abfragetyp, die Query.extractTerms unterstützt). Ich glaube, dass wir es für SpanNearQuery und SpanNearOrderedQuery Instanzen intern verwendet haben, aber ich kann auf diesem falsch sein.

So oder so ich hoffe, das ist genug, um Ihnen den Einstieg.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top