Apache Solr 4.9 steht in den Startlöchern. Daher wird es Zeit neue und spannende Funktionalitäten unter die Lupe zu nehmen. Eine der kommenden Neuerungen wird das sogenannte Re-Ranking sein, welches ich in diesem Blog beschreiben möchte.
Re-Ranking
Was ist Re-Ranking überhaupt und warum braucht man so was?
Fangen wir erst einmal mit dem zweiten Punkt an: Warum braucht man Re-Ranking? In Projekten stoßen wir immer wieder auf die Anforderung, das native Scoring von Apache Solr (TF-IDF) zu beeinflussen. Hierfür gibt es natürlich die unterschiedlichsten Ansätze. Man kann eigene Scoring Algorithmen implementieren, FunctionQueries nutzen oder einfach die Trefferliste explizit sortieren. Um flexibel zu bleiben, nutzen wir gerne die Möglichkeiten zur Suchzeit, wie beispielsweise die angesprochenen FunctionQueries. Dies kann aber zu negativen Einflüssen auf die Performance führen, wenn die ausgeführte Suche eine große Trefferliste generiert, da FunctionQueries für jedes Dokument der Trefferliste ausgeführt werden.
Um diesem Performanceeinbruch entgegenzuwirken kann man zukünftig in Apache Solr diese FunctionQueries auf einen Teil der Dokumente – die Top X Treffer – beschränken.
Das Re-Ranking ist also ein zweistufiger Scoring Mechanismus, bei dem „teure“ Scoring-Berechnungen im zweiten Schritt und nur auf einem Teil der Dokumente ausgeführt werden.
Re-Ranking in Apache Solr
Um die Re-Ranking Funktionalität in Solr zu nutzen muss der ReRankQParser angesprochen werden. Dies kann mittels LocalParams gemacht werden, wie im folgenden Beispiel zu sehen ist:
q=apache solr&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=3}&rqq=solrcloud
Das Re-Ranking nutzt folgende Parameter:
- reRankQuery – Solr Query, die für das Re-Ranking genutzt wird
- reRankDocs – Anzahl der Dokumente, deren Score im zweiten Schritt neu berechnet wird
- reRankWeight – Gewichtung, welche beim Re-Ranking der Dokumente berücksichtigt wird
Das obige Beispiel findet alle Dokumente, die die Query „apache solr“ matchen, und ändert das Ranking der besten 1000 Dokumente. Dokumente, die ebenfalls „solrcloud“ enthalten, bekommen ein zusätzliches Gewicht von 3.
Fazit
Re-Ranking ist eine tolle Möglichkeit dynamisch, also zur Suchzeit , das Scoring zu beeinflussen ohne große Performance einbüßen fürchten zu müssen. Re-Ranking wird mit Sicherheit nicht das Allheilmittel sein, um das Scoring anzupassen, aber schon jetzt ist absehbar, dass dies in vielen Situationen sehr hilfreich sein wird.
Weiterführende Links
- Jira Issue – https://issues.apache.org/jira/browse/SOLR-6088