Frage

Ich möchte mein Ergebnis gesetzt filtern, bevor ich zu suchen. Ich weiß, dass der richtige Weg, dies zu tun ist durch die Filterabfrage (FQ) Parameter verwendet wird. Ich möchte jedoch auf der Grundlage der Ausgabe einer Funktion auf einem Feld durchgeführt filtern.

Ich habe ein Feld ‚Bewertung‘, die eine ganze Zahl im Bereich von 1 bis ~ 75000 ist. Die Obergrenze kann sich ändern. Ich möchte mit der höchsten Bewertung der Nutzer "zu den Top-500-Elemente filtern. In SQL sein, dies wäre so etwas wie:

... ORDER BY rating DESC LIMIT 500

Ich glaube, ich kann die Dokumente in solr nach Bewertung absteigend mit der Funktion rord (Stern) auf Platz bekommen, so dass im Grunde würde ich tun:

fq=rord(rating):[0 TO 500]

Aber das scheint nicht möglich. Weiß jemand, was ich sonst noch tun könnte?

War es hilfreich?

Lösung

Dank Yonik Seeley auf der Solr-Mailingliste:

  

Solr 1.4 können jetzt tun Bereichsabfragen auf   beliebige Funktionen:    http://lucene.apache.org/solr/ api / org / apache / Solr / search / FunctionRangeQParserPlugin.html

     

Beachten Sie, dass ord () und rord () wird nicht funktionieren   richtig in Solr 1.4 Stamm. Lucene hat   per-Segment in einem Benutzer geändert   Multireader und damit werden Sie   derzeit erhalten die ord () oder rord () in   dass das Segment, nicht im gesamten Index.

Andere Tipps

Es sei denn, ich etwas fehle, könnten Sie nicht durch das Rating-Feld sortieren und dann nehmen Sie einfach die ersten 500, die zu Ihrem SQL-Beispiel identisch sein würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top