Ich las das Papier von Doug Cutting; "Space optimizations for total ranking".Lucenes Algorithmus
Da es vor langer Zeit geschrieben wurde, frage ich mich, welche Algorithmen Lucene verwendet (in Bezug auf Buchung Liste Traversal und Score-Berechnung, Ranking).
Insbesondere der gesamte Rangordnungsalgorithmus, der dort beschrieben wird, umfaßt das Durchlaufen der gesamten Buchungsliste für jeden Abfragebegriff, so daß im Falle sehr häufiger Abfragebegriffe wie "gelber Hund" jeder der 2 Begriffe sehr sehr lange Buchungen haben kann Liste im Falle der Websuche. Sind sie alle in der aktuellen Lucene/Solr wirklich durchquert? Oder gibt es irgendwelche Heuristiken, um die verwendete Liste zu kürzen?
In dem Fall, wenn nur die Top-k-Ergebnisse zurückgegeben werden, kann ich verstehen, dass die Verteilung Liste auf mehrere Maschinen verteilen, und dann die Top-k von jedem kombinieren würde funktionieren, aber wenn wir "100 Ergebnisseite ", dh die Ergebnisse werden von 990-1000 gewertet, dann müsste jede Partition immer noch die Top 1000 herausfinden, also würde Partitionierung nicht viel helfen.
Gibt es eine aktuelle detaillierte Dokumentation zu den von Lucene verwendeten internen Algorithmen?
zusätzlich weiß jeder grob (natürlich sind die Details ein Geheimnis, aber ich denke, die wichtigsten Ideen sollten gemeinsame genug in diesen Tagen sein) wie Google schnelle Ranking in Fällen von Multi-Term-Abfragen mit UND? (Wenn ihre Postings nach der Reihenfolge von PageRank sortiert sind, ist es verständlich, dass eine einzelne Termabfrage das Top-k schnell zurückgibt, aber wenn es mehrere Terme enthält, müssten sie die gesamten Listen durchsuchen, um das Unsektretset zu finden Listen sind nicht nach docId sortiert, wie in der Lucene Papier Fall) –
Ich weiß nicht, wie das eigentlich funktioniert, aber wenn Sie frühe Abfrage Beendigung tun möchten, sollten Sie Index Reihenfolge (Doc Ids) Relevanz (Pagerank in Ihrem Fall), zumindest pro Segment. Dies würde Ihr Problem für Multi-Term-Abfragen lösen. – jpountz