Sortierung Solr mehrwertigen Felder, die auf Feldwerten basieren
Habe ich mehrere Solr-Instanzen mit getrennten schemas.
Brauche ich zum empfangen von mehrwertigen Feldes in sortierter Reihenfolge, z.B. vom Typ: train_station, Flughafen, city_district, und so weiter:
q=köln&sort=query({!v="type:(airport OR train_station)"}) desc
Ich würde gerne sehen, airport Art Dokument vor train_station geben. Für jetzt bin ich immer train_station Typ an der Spitze.
Wie sollte Schreibe ich die Abfrage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie immer
train_station
s an der Spitze, weil der IDF.Ein quick hack um es zu beheben wäre die Verwendung einer range-query (das hat den Vorteil, dass Sie konstant erreicht souverän) und Abfrage steigert:
q=köln&sort=query({!v="type:([airport TO airport]^3 OR [train_station TO train_station]^2)"}) desc
.Diese Weise Dokumente, die
airport
in Ihren Typ-Feld wird eine Punktzahl von 3, - Dokumente, dietrain_station
in Ihren Typ-Feld wird in einen score von 2 und Dokumente, dieairport
undtrain_station
in Ihrem Bereich geben wird einen score von 2+3=5 (auf eine multiplikative Konstante).Eine elegantere (und effektivste) Weg, dies zu tun wäre, um eine benutzerdefinierte Abfrage schreiben, parser (oder auch einer Funktion) Abfragen.
Können Sie die Sortierung über eine Funktion, nur wenn es gibt einen einzelnen Wert pro Dokument. Sie können definitiv nicht Sortieren, die ein mehrwertiges Feld oder jedes Feld wird in Token aufgeteilt. Scheint, wie Sie benötigen würde, eine Funktion, die zurückgibt, "airport" enthält das Feld "airport" (auch wenn es enthält "Bahnhof") und "Bahnhof", wenn es mit "Bahnhof", aber nicht "Flughafen", und Sortieren Sie anschließend auf.
Eine andere option wäre, Griff dieser zum Zeitpunkt der index. Fügen Sie ein Feld namens "airport_train_station_sort", die 1 zurückgibt, wenn das Feld "airport", 2 enthält das Feld "Bahnhof", aber NICHT zum Flughafen, und 3, wenn es enthält weder. Dann einfach die Sortierung auf das Feld.
Sie nicht lösen können das problem in SOLR. Überprüfen Sie die Dokumentation, SOLR nicht Sortieren mehrwertige Felder. Ältere Versionen von SOLR können Sie es ausprobieren, aber die Ergebnisse waren nicht definiert und unberechenbar.
Du entweder ändern Sie Ihr schema und setzen diese dann Sortieren Sie die Daten in single-Wert indizierten Feldern, oder Sie brauchen, um mehrere Abfragen, zunächst für Flughäfen, dann Stadtteile, dann Zug Stationen.
Um Elemente innerhalb des Feldes selbst werden haben Sie ihn indizieren, damit Sie wollen, oder tun die Nachbearbeitung. Solr ist eine Art Sortieren nur docs!