Order solr Dokumente mit der gleichen Punktzahl nach Datum absteigend hinzugefügt

7

Ich möchte Suchergebnisse von SOLR haben, die wie folgt lauten:

Alle Dokumente, die die gleiche Punktzahl haben, werden absteigend nach dem hinzugefügten Datum sortiert.

Also wenn ich solr abfrage, werde ich n Dokumente haben. In diesem Ergebnissatz gibt es Gruppen von Dokumenten mit demselben Ergebnis. Ich möchte, dass jede dieser Dokumentengruppen absteigend nach Datum hinzugefügt wird.

Ich entdeckte, dass ich dies mit Funktionsabfragen erreichen kann, genauer gesagt mit rord function Ссылка , aber als es ist in der Dokumentation

angegeben
  

WARNUNG: ab solr 1.4 können ord () und rord () zu viel Speicher verwenden   da sie einen FieldCache-Eintrag auf dem Top-Level-Reader verwenden müssen, während   Sortier- und Funktionsabfragen verwenden jetzt Einträge auf Segmentebene.   Daher Sortieren oder Verwenden einer anderen Funktionsabfrage, zusätzlich zu   ord () / rord () verdoppelt die Speicherbelegung.

verursacht übermäßigen Speicherverbrauch.

Welche anderen Optionen habe ich?

Ich dachte daran, recip(ms(NOW,startTime),1,1,0) zu verwenden. Ist das der beste Ansatz?

Gibt es irgendwelche negativen Auswirkungen auf die Leistung, wenn ich recip und ms verwende?

    
Dorin 10.02.2012, 12:13
quelle

2 Antworten

16

Sie können mehrere SORT-Bedingungen verwenden:

  

Mehrere Sortierreihenfolgen können durch ein Komma getrennt werden, dh: sort = + [, +] ...

Ссылка

Also, in Ihrem Fall wäre: sort = score DESC, date_added DESC

    
Stelian Matei 10.02.2012, 12:38
quelle
5

Da Ihre Fragen sagen:

  

Alle Dokumente mit demselben Ergebnis werden absteigend sortiert   nach Datum hinzugefügt.

Die andere Antwort ist perfekt.

Wie auch immer, ich würde Ihnen empfehlen, sicherzustellen, dass Sie das Datum nur nach einem Dokument mit demselben Ergebnis sortieren möchten. Nach meiner Erfahrung war das immer falsch. Tatsächlich ist der solr-Score nicht absolut, sondern nur relativ zu anderen Dokumenten, und jedes Dokument ist anders.

Daher würde ich nicht nach Partitur und dann noch nach etwas anderem sortieren, weil es schwer vorhersehbar ist, wann Sie für verschiedene Dokumente die gleiche Punktzahl erhalten. Ich würde persönlich nur auf score sortieren und eine Funktion verwenden, um neuere Dokumente zu verbessern. Sie können ein gutes Beispiel auf dem solr Wiki finden, die dort verwendete Funktion ist recip(ms(NOW,date_field),3.16e-11,1,1) .

Wenn Sie sich Sorgen um die Leistung machen, können Sie versuchen, die Zeit für die Indexerhöhung zu erhöhen. Sehen Sie sich hier an.

    
javanna 10.02.2012 16:36
quelle

Tags und Links