2013-01-18 7 views
6

Yeni Solr 4 jeo-uzamsal arama ile oynuyorum.Solr 4 jeo-uzamsal aramada mesafe nasıl alınır?

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 

Ama çalışmıyor: http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 bir örnekte gibi ben sonuçları şöyle almaya çalışıyorum. Sonuçlar setinde mesafe ve skor alanlarına nasıl ulaşabilirim? Aşağıdakilerden birini yapmak size alanları parametreyi düzenleyebilir Spatial Search - Returning the distance referansa göre

cevap

7

:

  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - bu bir takma _dist_
+3

Aşağıdaki hatayı döndürür: 'Hata ayrıştırma alanı adı: geodist - yeterli değil: []' – andrexus

+0

Burada 'geodist() işlevi için bir başvuru var http://wiki.apache.org/solr/ SpatialSearch # geodist _-_ The_distance_function –

+0

'Bir ValueSource bu alandan doğrudan erişilemiyor. Bunun yerine, skoru kullanarak mesafeyi kullanarak bir sorguyu deneyin. ' – andrexus

4

yılında mesafeyi dönecektir Paige'in verdiği cevap doğru. Ancak, verilen sorguya bağlı olarak hata gösterilir. sfield (belgedeki yerini tutan alan) ve bir pt (daire merkezi noktası) ihtiyacı geodist

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

. Bunlardan herhangi birini bulamazsa, gösterilen hatayı atar.

Ya URL'ye

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

bu ikisini ekleyin Ya da iki (veya aslında 3: pt, lat ve lon) ekleyin: içinde

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

Not olduğunu geodist() işlev çağrısına İlk durumda, sorgunuzda ek coğrafi işlevler (geofilt gibi) varsa, pt ve sfield bunun için de kullanılır (yerel olarak geçersiz kılmadığı sürece) den)