Ich habe 2 Indizes, einen für Metadaten und einen für Text, ich möchte in der Lage sein, alle Feldsuchen in der Abfrage zu entfernen und nur die Standardfelder zu verwenden, die der Benutzer suchte, dh "hilfe UND titel: fahrgemeinschaft" ich will nur die hilfe teil, ideen?Lucene ignorieren Abfragen auf anderen Feldern als Standard
0
A
Antwort
1
Traverse über Baum von BooleanQuery und Entfernen von Einträgen im Zusammenhang Begriffs („Hilfe“)
1
Dies ist ein Baseballstadion von dem, was Ihr Code soll wie folgt aussehen:
public static void removeNonDefault(BooleanQuery query, String defaultField) {
List<BooleanClause> clauses = (List<BooleanClause>)query.clauses();
Iterator<BooleanClause> iter = clauses.iterator();
while(iter.hasNext()) {
BooleanClause clause = iter.next();
Query subQuery = clause.getQuery();
if(subQuery instanceof BooleanQuery) {
removeNonDefault((BooleanQuery)subQuery, defaultField);
} else if(subQuery instanceof TermQuery) {
if (!((TermQuery) subQuery).getTerm().field().equals(defaultField)) {
iter.remove();
}
}
}
}
Was das bedeutet ist entfernt TermQuery
s mit das nicht standardmäßige Feld von und rekursiv in sub-boolesche Abfragen.
Beachten Sie, dass dieser Code nicht vollständig ist. Abhängig von Ihrer Situation gibt es möglicherweise mehr Arten von Abfragen, über die Sie sich Gedanken machen sollten, z. B. Suchanfragen und Abfragen mit konstantem Trefferbereich.
Bevor Sie diese Funktion aufrufen, stellen Sie sicher, dass Sie query.rewrite()
tun, um beliebige Platzhalterabfragen in boolesche Abfragen zu konvertieren.
Verwandte Themen
- 1. Lucene „oder Abfragen“
- 2. Javers Standard-Ignorieren statt Standard-Include
- 3. Lucene als Datenspeicher
- 4. Fehlerbehebung bei Java Lucene Ignorieren von Feld
- 5. Lucene: Suche nach mehreren Feldern mit Standardoperator = AND
- 6. NuGet Pack: ignorieren Standard enthält
- 7. Lucene - Sortierdatum als NumericField
- 8. Elasticsearch - Einrichten von Standard-Analysatoren auf allen Feldern
- 9. Spring MVC, Datei mit anderen Feldern hochladen
- 10. Verwendung von Lucene als Speicher
- 11. Handhabung + als Sonderzeichen in Lucene Suche
- 12. Lucene Index mit mehreren Feldern der gleichen Art
- 13. highlight.js: Wie erkläre ich ignorieren Standard css
- 14. Lucene Query String Elasticsearch "weniger als oder gleich" [URI Search]
- 15. Git Repo Standard ignorieren Dateien Berechtigungen
- 16. ArcGIS: Feldwert aus anderen Feldern automatisch berechnen
- 17. Cypher Abfragen als Batch-Operationen auf Neo4j
- 18. Andere Submodule importieren & Standard-Lib ignorieren
- 19. Wie verwendet man Präfix-Abfragen für Felder in Lucene?
- 20. Wie funktioniert die automatische Vervollständigung von Abfragen in Lucene?
- 21. gcc: Wie Standard-Include-Pfade ignorieren?
- 22. Ignorieren oder Neudefinieren GCC-Standard vordefinierte Makros
- 23. Verwenden von Lucene zum Abfragen einer RDBMS-Datenbank
- 24. Wie Abfragen von Objekten mit Punkten in Feldern in Mongodb
- 25. Phalcon Validate Feld auf einem anderen Feldern hängt
- 26. Django setzte Feldwerte dynamisch basierend auf anderen Feldern
- 27. Summe Array von Hashes basierend auf anderen Feldern in Hash
- 28. Bedingte Validierung von Feldern basierend auf anderen Feldwert in Symfony2
- 29. JPA berechnetes Feld von anderen Feldern
- 30. Lucene/Python
alle Websites/Vorschläge, wo Sie dies tun können? –