2012-09-21 38 views
5

Pagué a un programador de terceros para desarrollar un esquema para Solr, pero ahora que tengo más información, tengo una pregunta.Forma correcta de almacenar coordenadas en Solr

El objetivo es hacer la búsqueda espacial así que en mi esquema tengo esto:

<field name="latlng" type="location" indexed="true" stored="false" /> 
<field name="latlng_0_coordinate" type="double" indexed="true" stored="false" /> 
<field name="latlng_1_coordinate" type="double" indexed="true" stored="false" /> 

Mi sitio suscripción a través de JSON para lat_lng_0_coordinate y latlng_1_coordinate pero nada se presenté a latlng.

Además, no hay otra mención de "latlng" en mi schema.xml, por lo que no es como si hubiera una combinación o una función de unión allí hasta donde yo pueda ver.

Entonces, mi pregunta es, ¿tiene latlng un propósito o el codificador lo ha introducido por error?

Respuesta

5

tipo de campo latlng se define como ubicación. La definición del campo de ubicación es la siguiente.

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

Se requiere la creación de campos dinámicos con el sufijo _coordinate.

En su ejemplo, latlng_0_coordinate se debe utilizar para el campo de latitud y latlng_1_coordinate para el campo de longitud.

Luego, mediante consultas espaciales, puede usar el campo latlng.

Por ejemplo, para encontrar las ubicaciones más cercanas dentro de los 5km con el punto dado, puede usar la siguiente consulta. 41.431, 28.431 son solo lugares aleatorios que escribí.

{!geofilt sfield=latlng}&pt=41.431,28.431&d=5 

Como resultado, no es un error, es a propósito.

Ver también en los documentos Solr: https://wiki.apache.org/solr/SpatialSearch#QuickStart

+0

Excelente, gracias –

+0

@ parvin, donde se menciona que el valor del parámetro de d sería en km ?? Lo leí en algunos lugares que está en millas. – NamingException

Cuestiones relacionadas