Solr Suche – Nach Land und Preis sortieren

Werbung

Vor einiger Zeit stiess ich auf eine Aufgabenstellung, die mir erst einiges Kopfzerbrechen bereitet hat. Dabei ging es darum eine Liste mit Maschinen nach aufsteigendem Preis zu sortieren. Das ist ja noch sehr einfach.

&sort=price asc

Das zweite Kriterium der Suche war: Maschinen aus einem bestimmten Land sollten zuerst angezeigt werden.

Werbung
&sort=country_isocode asc, price asc

Die Sortierung funktioniert jetzt soweit, dass nach Ländern sortiert wird und dann nach Preis. Aber es soll nach einem bestimmten Land sortiert werden. Also ich möchte alle deutschen Maschinen an den Anfang sortieren.

Die Lösung lautet Function Query.

&sort=if(exists(query({!v='country_isocode:D'})),100,0) desc, price asc

Die Funktion prüft darauf ob im Feld country_isocode das Länderkürzel D vorhanden ist und gibt dem Feld den Wert 100 oder falls nicht, dann 0. Damit wird nicht der Feldinhalt sortiert, sondern das Ergebnis der Funktion.