2013-01-18 6 views
6

Używam nowego wyszukiwania geoprzestrzennego w Solr 4. Podobnie jak w przykładzie z http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 Próbuję uzyskać wyniki tak:Jak uzyskać odległość w wyszukiwaniu geoprzestrzennym Solr 4?

http://localhost:8983/solr/allopenhours/select? 
&q=foobar 
&fq=geo:%22Intersects(Circle(54.729696,-98.525391%20d=0.08992))%22 
&q={!%20score=distance} 
&fl=*,score 

Ale to nie działa. Jak uzyskać w zestawie wyników pola odległości i punktacji?

Odpowiedz

7

Zgodnie z odniesieniem Spatial Search - Returning the distance można edytować parametr polach Do wykonaj jedną z następujących czynności:

  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - ten powróci odległość w aliasu _dist_
+3

Zwraca następujący błąd: 'Błąd parsowania nazwy pola: geodista - niewystarczające parametry: []' – andrexus

+0

Oto odwołanie do funkcji 'geodist()' http://wiki.apache.org/solr/ SpatialSearch # geodist _-_ The_distance_function –

+0

'Źródło ValueSource nie jest dostępne bezpośrednio z tego pola. Zamiast tego spróbuj zapytać używając odległości jako wyniku. " – andrexus

4

Odpowiedź, którą Paige podała, jest poprawna. Jednak błąd jest wyświetlany w zależności od podanego zapytania.

Error parsing fieldname: geodist - not enough parameters:[]

geodist potrzebuje (pole, które posiada lokalizację w dokumencie) sfield i pt (centralny punkt okręgu). Jeśli nie może znaleźć żadnego z nich, wyświetli wyświetlony błąd.

Albo dodać te dwa do adresu URL

&pt=52.373,4.899&sfield=store&fl=_dist_:geodist() 

lub dodać dwa (a właściwie 3: pt, lat i lon) na wezwanie geodist() funkcji:

&fl:_dist_:geodist(store,52.373,4.899) 

zauważyć, że w pierwszy przypadek, jeśli masz dodatkowe zapytania geograficzne (np. geofilt) w zapytaniu, używane są również dla nich pt i sfield (chyba że lokalnie overrid den)

Powiązane problemy