2013-01-18 6 views
6

Sto giocando con la nuova ricerca geospaziale Solr 4. Come in un esempio da http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4 sto cercando di ottenere i risultati in questo modo:Come ottenere la distanza nella ricerca geospaziale 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 

Ma non funziona. Come posso ottenere campi distanza e punteggio nel set di risultati?

risposta

7

Secondo il riferimento Spatial Search - Returning the distance è possibile modificare il parametro di campi per effettuare una delle seguenti operazioni:

  • &fl=*,score,geodist()
  • &fl=*,score,_dist_:geodist() - questo restituirà la distanza nella alias _dist_
+3

Viene restituito il seguente errore: 'Errore durante l'analisi del nome del campo: geodist - parametri non sufficienti: []' – andrexus

+0

Ecco un riferimento per la funzione 'geodist()' http://wiki.apache.org/solr/ SpatialSearch # geodist _-_ The_distance_function –

+0

'A ValueSource non è direttamente disponibile da questo campo. Prova invece una query usando la distanza come punteggio. – andrexus

4

La risposta che Paige ha dato è corretta. Tuttavia, l'errore viene visualizzato in base alla query fornita.

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

geodist bisogno (campo che contiene la posizione nel documento) sfield e (il punto centrale del cerchio) pt. Se non riesce a trovare nessuno di questi, lancerà l'errore mostrato.

O aggiungere questi due all'URL

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

o aggiungere i due (o addirittura 3: pt, lat e lon) al geodist() funzione di chiamata:

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

Si noti che nel primo caso, se nella query sono presenti ulteriori funzioni geografiche (come geofilt), vengono utilizzati anche pt e sfield (a meno che non vengano sovrascritte localmente) den)