2015-05-28 6 views
6

Ich führe eine Abfrage gegen einen SOLR-Kern und schränken das Ergebnis mit einem Filter wie fq: {!frange l=0.7 }query($q). Ich bin mir bewusst, dass SOLR-Ergebnisse nicht eine absolute Bedeutung haben, aber die 0,7 (nur ein Beispiel) wird berechnet basierend auf Benutzereingaben und einige Heuristiken, die recht gut funktioniert.Stabile SOLR-Ergebnisse

Das Problem ist das folgende: Ich aktualisiere einige Dokumente in meinem Kern. Die aktualisierten Felder sind nur Metadatenfelder, die nichts mit der obigen Suche zu tun haben. Da jedoch ein Update intern ein Lösch + Einfügevorgang ist, ändern sich IDF und die Anzahl der Dokumente. Und so auch die berechneten Punkte. Plötzlich gibt meine Abfrage unterschiedliche Ergebnisse zurück.

Wie Yonik mir here erklärte, ist dieses Verhalten von Entwurf. Also meine Frage ist: Was ist die einfachste und minimale Möglichkeit, um die Ergebnisse und die Ausgabe meiner Abfrage stabil zu halten?

Laufen optimieren nach jedem Commit sollte das Problem lösen, aber ich frage mich, ob es etwas einfacher und weniger teuer ist.

Antwort

1

Sie müssen wirklich optimieren ausführen. Wenn Sie den Index solr optimieren, bereinigen Sie alle noch nicht angezeigten Dokumente und machen Sie die Abfrage stabil. Dies geschieht, weil die Erstellung dieser Metadaten-Information teuer ist, wenn die ganze Zeit ein Dokument aktualisiert wird. Aus diesem Grund tun Sie das nur, um zu optimieren. Es gibt eine gute Möglichkeit zu sehen, ob Ihr Index mehr oder weniger stabil ist ... Wenn Sie auf Solr-API zugreifen, können Sie Num Docs und Max Doc Informationen sehen. Wenn Max Doc größer als Num Docs ist, scheint es, dass einige alte Produkte Ihre Relevanzberechnung beeinflussen. Optimieren Sie den Index diese beiden Zahlen wird wieder gleich gemacht. Wenn diese Zahlen gleich sind, können Sie darauf vertrauen, dass IDF korrekt berechnet wurde.

Verwandte Themen