c# solr solrnet

c# - Cómo agregar Spatial Solr a una consulta de Solrnet



(1)

Use 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"));

Esto está disponible a partir de SolrNet 0.3.0b1.

Estoy ejecutando Solr en mi máquina de Windows usando embarcadero. He descargado el complemento Spatial Solr, que finalmente logré poner en funcionamiento. También estoy usando Solrnet para consultar contra Solr de mi proyecto asp.net mvc.

Ahora, agregar datos a mi índice parece funcionar bien y SpatialTierUpdateProcessorFactory también funciona.

El problema es:

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

Aquí hay un ejemplo de mí tratando de combinar la consulta espacial con una consulta de rango de datos. La consulta del rango de fechas funciona bien sin la consulta espacial asociada:

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

que da como resultado la siguiente consulta contra 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 recibo 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, el problema es que si uso la página Solr Web Admin y ejecuto la siguiente consulta en su contra, 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 / forma correcta de llamar a la función espacial usando SolrNet. ¿Es la mejor manera de agregar de alguna manera ese bit de la consulta manualmente a la cadena de consulta y es así cómo?