Ich würde vorschlagen, Deep Paging zu verwenden.
Einfache Paginierung ist eine einfache Sache, wenn Sie nur wenige Dokumente zu lesen haben und alles, was Sie tun müssen, mit den Parametern start
und rows
spielen. Aber wenn Sie viele Dokumente haben, ich meine Hunderttausende oder sogar Millionen, ist das kein gangbarer Weg.
Das ist die Sache, die Ihren Solr-Server in die Knie zwingen könnte.
Für typische Anwendungen die Suchergebnisse einen menschlichen Benutzer anzeigt, dies neigt dazu, viel von einem Problem nicht zu sein, da die meisten Nutzer interessieren sich nicht über Drilldown über die erste Handvoll Seiten der Suchergebnisse - aber für automatisierte Systeme, die Daten über alle Dokumente zu einer Abfrage knirschen wollen, kann es ernsthaft prohibitiv sein.
Das bedeutet, wenn Sie eine Website haben und Paging-Suchergebnisse, ein echter Benutzer geht nicht so weiter, aber auf der anderen Seite betrachten, was versuchen, wenn eine Spinne oder ein Schaber passieren kann alle Seiten der Website zu lesen .
Jetzt sprechen wir von Deep Paging.
Ich werde vorschlagen, diesen erstaunlichen Beitrag zu lesen:
https://lucidworks.com/blog/2013/12/12/coming-soon-to-solr-efficient-cursor-based-iteration-of-large-result-sets/
Und einen Blick auf diesem Dokument Seite nehmen:
https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results
Und hier ist ein Beispiel, das zu erklären versuchen, wie mit den Cursorn paginieren.
Unsere Erfahrung (und Rücksprache) war die gleiche: Die Verwendung von Solr als Filter-und-Return-All-Results-System ist alles andere als optimal. Es wurde einfach nicht für die Rückgabe aller Ergebnisse entwickelt. Wir wünschen uns jedoch, dass es einen Weg gibt, mindestens alle übereinstimmenden "Schlüssel" (Schlüsselfeldwerte) zu erhalten. Siehe hierzu [ähnliche Frage] (http://stackoverflow.com/questions/16280837/solr-query-get-results-without-scanning-files) – Yonatan