Ich habe eine Solr-Instanz mit variablen Produktpreisen, die eine Website-Suche antreibt. So suchen um ein Datum und Ergebnisse zeigen, auch wenn die genaue gewünschten Termin nicht verfügbar ist, verwenden wir eine Abfrage wie folgt:Solr Sortierung innerhalb der Gruppe nach Nähe
product_id: 759 AND arrival_date:[2016-05-20T00:00:00Z-3DAYS TO 2016-05-20T00:00:00Z+3DAYS]
Die Ergebnisse sind grouped
von product_id
. Die Gruppierung erbt eine price asc
Sortierreihenfolge von der Hauptabfrage.
Dies hat leider den negativen Nebeneffekt, dass immer Dokumente mit dem niedrigsten Preis zurückgegeben werden, unabhängig vom Datum, auch wenn das angeforderte Datum verfügbar ist.
Wie kann ich innerhalb einer Gruppe nach Nähe zu einem Datum sortieren?
Das erste in immer mit der 'date-3DAYS' sortiert werden würde, ich Ich habe Angst. – Lg102
Es tut mir leid, ich habe deine Frage nicht richtig gelesen. Vielleicht können Sie versuchen, eine Boost-Abfrage zu verwenden, anstatt zu sortieren, um Ihre Ergebnisse zu sortieren. Etwas wie '{! Boost b = (recip (ms (arrival_date, 2016-05-20T00: 00: 00.000), 2.592e-9,1,1))} product_id: 759 AND arrival_date: [2016-05-20T00: 00: 00.000-3DAYS TO 2016-05-20T00: 00: 00.000 + 3DAYS] '. Ich bin mir nicht sicher, ob das funktionieren wird, da ich es nicht ausprobiert habe, aber Sie könnten es versuchen und das Ergebnis veröffentlichen. Abgeholt von [hier] (https://wiki.apache.org/solr/FunctionQuery#Date_Boosting) –
Das hat nicht direkt funktioniert, aber es brachte mich auf den richtigen Weg! Die von Ihnen beschriebene Boost-Funktion kann mit 'eDisMax' verwendet werden. Ich werde mehr Ergebnisse veröffentlichen, wenn ich mit der Implementierung fertig bin. – Lg102