Filter wirkt sich nicht auf die Berechnung des Ergebnisses der nicht gefilterten Dokumente aus.
Zum Beispiel stellen Sie sich die folgenden Dokumente:
1.
loc: "uk", "london"
text: "i live in london, "london is the best"
2.
loc: "london avenue", "london street", "london"
text: "I like the shop in london st."
jetzt lassen Sie uns sagen, dass Sie die folgende Abfrage tun:
q=+loc:"london" +text:"london"
in dieser Abfrage die Punktzahl von doc 2 ist höher als die von doc 1 (
: weil
loc
ist in dem Dokument score)
unter Verwendung eines Filters berechnet
in dieser Abfrage die Punktzahl von doc 1 ist höher als die von doc 2.
Excuse die Solr Stil Formatierung aber die Gesamt Vorstellung ist klar.
Weitere Gründe für die Verwendung von Filtern sind Caching-Zwecke, Filter werden getrennt von Abfragen zwischengespeichert. Wenn Sie also eine dynamische Abfrage mit einem statischen Teil haben, ist es sinnvoll, nach dem statischen Teil zu filtern. Auf diese Weise ist der Indexdurchlauf auf die Teilmenge der gefilterten Dokumente beschränkt.
Obwohl das, was Sie sagen, im Prinzip richtig ist, können Filter in Searchers auch weitergegeben werden, aber sie arbeiten separat auf Abfragen – Khash
@Khash Ich bin mir nicht sicher, was du meinst. Wenn Sie sagen, dass 'Filter'-Instanzen an einen' Searcher' (oder jetzt nur 'IndexSearcher') übergeben werden können, stimmt das, aber nur zusammen mit einer 'Abfrage' oder einem anderen Suchkriterium. Sie arbeiten nicht alleine. – erickson