2017-10-30 6 views
0

I Solr 6.5.1von LatLonType Upgrade auf LatLonPointSpatialField

LatLonType ist veraltet (https://lucene.apache.org/solr/guide/6_6/spatial-search.html) und ich versuche, bin mit dem LatLonPointSpatialField zu verwenden. Ich brauche es auch mehrwertig.

Mein Feld ist wie folgt definiert:

<fieldType name="location" class="solr.LatLonPointSpatialField" docValues="true"/>

ich auf meinem LatLonType Feld vor, so steigern verwendet:

boost=recip(geodist(sfield,45.15,-93.12),3 ,10000,3000) (I eDisMax verwende).

Nach änderte ich die räumlichen Datentypen, erhalte ich diese Fehlermeldung:

A ValueSource isn't directly available from this field. Instead try a query using the distance as the score., die ich nicht verstehe.

Die Dokumentation sagt nichts über die Verwendung der geodist-Funktion mit edismax zur Verwendung in boost= Parameter. Statt nur es legt nahe, den Funktionswert zu verwenden, für die Sortierung: https://lucene.apache.org/solr/guide/6_6/spatial-search.html#SpatialSearch-geodist

Dies wird jedoch nicht für mich arbeiten, ich brauche nicht auf Distanz zu sortieren, mag ich die geodist() Funktion mit Punktzahl multipliziert werden, um den resultierenden zu ändern Ergebnis.

Antwort

0

Die Lösung, die für mich gearbeitet:

Vor (LatLonType):

boost=recip(geodist(coordinates_ll,49.175,-123.003),1,10,1)

Nach (LatLonPointSpatialField):

boost=recip(geodist(),1,10,1)&pt=49.175,-123.003&sfield=coordinates_ll