Frage

Ich habe einen Solr -Index mit Solrnet zugegriffen, und ich möchte den Index (Position) eines bestimmten Dokuments in den Ergebnissen abrufen, ohne den gesamten Ergebnissatz zurückzugeben.

Ausführlicher ... die Abfrage kehrt ~ 30.000 Dokumente zurück und wird von einem Ganzzahlfeld bestellt. Das einzigartige Schlüsselfeld enthält eine Richtlinie, und ich möchte herausfinden, wo in den Ergebnissen ein bestimmtes Dokument auf dem eindeutigen Schlüssel basiert, während nur die ersten 10 Ergebnisse zurückgegeben werden.

Dieser Index wurde ursprünglich in einfacher Old Lucene implementiert, und diese Aufgabe wurde mit zwei Abfragen erreicht, um die Lucene Doc ID des Dokuments zu erhalten, über die ich wissen möchte, und dann eine Sekunde, die das gesamte Ergebnissatz zurückgibt. Ich kann dann die DOC -ID verwenden, um zu finden, wo das Dokument im vollständigen Ergebnissatz angezeigt wird, aber dann nur die Dokumente für die ersten 10 aufzählt.

Gibt es eine Möglichkeit, das zu erreichen, was ich mit Solr safft, ohne alle 30000er Ergebnisse zurückzugeben (sogar die Einschränkung der Richtlinie scheint nur zu langsam)?

Vielen Dank

War es hilfreich?

Lösung

Ich denke, Sie können mit einer Bereichsabfrage, einschließlich Ihrer Benutzerspitze, als niedrigere Ebene ausgehen. Sie können die Anzahl der Benutzer oben erhalten. Sie können eine explizite Abfrage durchführen oder diese Informationen mit dem Facettenbereichsansatz abrufen.

Wenn Sie also wissen, dass Ihr Benutzerpunkt 10.000 ist, können Sie eine Abfrage machen: Spiel: Tetris Points [Maxint bis 10000]. Wenn das Ergebnis 375 ist, wissen Sie, dass Ihr Benutzer in Rang 375 ist.

Andere Tipps

Der einzig zuverlässige Weg, den ich mir vorstellen kann, besteht darin, das Ranking zur Index-Zeit zu erstellen, dh ein "Rang" -Fachfeld zu haben und es beim Erstellen des Index zu füllen. Der Nachteil ist, dass für jedes Update der gesamte Index wieder aufgebaut werden muss.

Lucene Doc IDs sind nicht stabil, ich würde sie nicht dafür empfehlen (siehe Dies, Dies, Dies), und Solr enthüllt sie sowieso nicht.

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