2011-08-29 31 views
8

¿La barra diagonal "/" es un carácter reservado en los nombres de campo de Solr?Solr Query no analiza la barra diagonal

estoy teniendo problemas para escribir una consulta Solr tipo que extrae los campos que contienen una barra inclinada "/"

Al hacer una petición HTTP de mi servidor Solr:

q=*&sort=normal+desc 

funciona, pero

q=*&sort=with/slash+desc 
q=*&sort=with%2Fslash+desc 

ambos fallan decir "no se puede utilizar en el campo FieldCache de varios valores: con"

Cada documento de solr contiene dos campos int "normal" y "con/barra diagonal". Con mi esquema de Solr indexación de los campos como así

... 
<field name="normal" type="int" indexed="true" stored="true" required="false" /> 
<field name="with/slash" type="int" indexed="true" stored="true" required="false" /> 
... 

¿Hay alguna forma especial que deba codificar barras inclinadas Solr? ¿O hay algún otro delimitador que pueda usar? Ya estoy usando '-' y "." para otros fines

+2

Para escapar caracteres, por favor, echa un vistazo a http://stackoverflow.com/questions/1133573/solr-sanitizing-query para escapar de los caracteres de Solr y desplácese hasta la parte inferior de http://wiki.apache.org/solr/SolrQuerySyntax para saber cómo redactar las URL.Espero que esto ayude – aitchnyu

+0

Gracias por los enlaces, sin embargo, el carácter "/" no está en la lista de caracteres solr sospechosos, y mi codificación URL no es un problema. FYI, he decidido solucionar este problema reemplazando/con _ en mis nombres de campo. – Akusete

+0

¡Doh! Me encontré con el mismo problema. '/' no está en la lista que revisé para los caracteres especiales tampoco. He intentado codificar, comillas, etc. No tengo suerte tampoco = ( – Justin

Respuesta

6

Me encontré con el mismo problema, y ​​después de algunos experimentos encontré que si tiene una barra diagonal en el nombre del campo, debe escapar con una barra invertida en la consulta de Solr (pero tenga en cuenta que no tiene que hacer esto en el parámetro lista de campos, por lo que una búsqueda en busca de /my/field/name contiene my_value se introduce en el campo "q" como:

\/my\/field\/name:my_value

no he probado el campo de ordenación, pero probar esto y háganos saber :)

Esto está en S olr 4.0.0 alpha.

1

Desde el Solr wiki en https://wiki.apache.org/solr/SolrQuerySyntax:

Solr 4.0 añade soporte para expresiones regulares, lo que significa que '/' es ahora un carácter especial y debe ser escapado si buscara literal barra diagonal.

-1

En mi caso yo necesitaba para buscar barra inclinada / con comodín *, por ejemplo:

+(*/*) 
+(*2016/17*) 

Intenté escapar de ella, así:

+(*2016\/*) 
+(*2016\/17*) 

pero que didn' t trabajo también

la solución era para envolver el texto con comillas dobles " como Do:

+("*\/*") 
+("*/*") 

+("*2016\/17*") 
+("*2016/17*") 

ambos regresaron el mismo resultado con y sin escapar de la barra inclinada

Cuestiones relacionadas