Frage

So habe ich umgesetzt und erfolgreich eingesetzt Solr 4. Ich muss sagen, dass Solr 4 ist genial! Wie dem auch sei sortierte ich erfolgreich durch die Entfernung und verwendet, um eine geofilter die Ergebnisse auf einen bestimmten Bereich zu begrenzen. Was mag ich jetzt tun ist, um die Relevanz Punktzahl durch die Umkehrung des Abstandes zu steigern. Diese Seite spricht darüber aber nicht sagen, wie es zu tun (http://wiki.apache.org/solr/SpatialSearch)

Ich habe folgendes versucht, aber es gibt mir eine Fehlermeldung:

http://localhost:8983/solr/select/?q={!boost b=recip(geodist(), 1, 1000, 1000)}...

Der Fehler ich erhalte, ist:

org.apache.lucene.queryParser.ParseException: Expected identifier at pos 27 str='{!boost b=recip(geodist(), 1, 10 in ...

Jede mögliche Hilfe würde geschätzt. Dank!

War es hilfreich?

Lösung

Sie müssen noch den Hauptteil der Abfrage nach der Boost-Funktion angeben:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&...

Wenn Sie nur daran interessiert durch die Umkehrung des Abstandes bei der Ankurbelung Sie eine Platzhalter-Abfrage verwenden kann:

q={!boost b=recip(geodist(),1,1000,1000)}*&...

... oder die Funktion Query Parser verwenden:

q={!func}recip(geodist(),1,1000,1000)&...

Sie müssen auch die lat / long Werte und räumliche Feld Abfrage entweder als Argument der geodist Funktion angeben:

q={!boost b=recip(geodist(50.1, -0.86, myGeoField),1,1000,1000)}foo:bar&...

... oder als Abfrage-String-Parameter ausgeklammert:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&sfield=myGeoField&pt=50.1,-0.86

Andere Tipps

nur hinzufügen, dass ich bessere Ergebnisse mit ...

{!boost b=recip(geodist(),1,100,10)}

Ich weiß nicht, was dies verursacht, aber ich wünschte Solr ein wenig mehr Informationen zu den Parametern für die recip und Auftrieb gab. Aktuelle Dokumentation fehlt.

Als Randbemerkung, ist hier ein Abstand Auftrieb an meinem Arbeitsplatz verwendet. Es ist anders als die auf der Solr-Dokumentations-Website. Diese Boost-Funktion wird behandeln Abstand gleich für eine Reihe von kilomteres, bevor die Förderung beginnt. Dies ist nützlich, in einigen Situationen, in denen Sie nicht Relevanz Änderungen für kleine Unterschiede in Abständen wollen.

Sie können die Konstante 25 ändern beliebige Anzahl von Kilometern sein, dass Sie die Boost wollen gleich sein.

Sie können den Abstand boost als solche definiert werden:

div(1.0, min(1000, max(25, geodist())))

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