Pregunta

Me postulo Solr en mi máquina Windows usando embarcadero. He descargado el espacial Solr Plugin que finalmente he conseguido poner en marcha. También estoy usando Solrnet a consulta contra Solr de mi proyecto asp.net mvc.

Ahora, la adición de datos en mi índice parece bien el trabajo y la SpatialTierUpdateProcessorFactory funciona así.

El problema es:

¿Cómo agrego la consulta espacial a mi consulta normal usando la biblioteca Solrnet. He intentado agregar que con el parámetro "ExtraParams", pero que no funcionó muy bien.

Este es un ejemplo de mí tratando de combinar la consulta espacial con una consulta rango de datos. La consulta rango de fechas funciona bien sin la consulta espacial que se le atribuye:

new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery);

lo que da como resultado la siguiente consulta en Solr:

(({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z])

Y el mensaje de error que regrese es:

El servidor remoto devolvió un error:. (400) Solicitud incorrecta

SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars
eException: Cannot parse '(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit=
km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:09:49Z TO 2011-05-0
7T13:09:49Z])': Encountered " <RANGEEX_GOOP> "lng=-2.6257 "" at line 1, column 2
4.
Was expecting:
    "}" ...

Ahora, la cuestión es si se utiliza la página Web de administración Solr y ejecutar la siguiente consulta en contra de ella, todo funciona bien.

{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London

¿Cuál es la mejor manera / correcto llamar a la función espacial utilizando SolrNet. Es la mejor manera de añadir alguna manera que algo de la consulta manualmente a la cadena de consulta y es así ¿cómo?

¿Fue útil?

Solución

Utilice la clase LocalParams para representar LocalParams en Solr :

solr.Query(new LocalParams {
    {"type", "spatial"},
    {"lat", "-51.5224"},
    {"long", "-2.6257"},
    {"radius", "10000"},
    {"unit", "km"},
    {"calc", "arc"},
    {"threadCount", "2"},
} + Query.Field("text").Is("London"));

Este servicio está disponible a partir del SolrNet 0.3.0b1.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top