2012-04-26 5 views
5

cuando pasé en una consulta "estado: O" lucene dio un error porque considera "O" como una palabra clave para la cláusula booleana, pero aquí en realidad aparece la abreviatura de Oregon, el estado.cómo escaparse correctamente de O y Y en una consulta lucene?

He visto esa cita O por lo que la consulta se convierte en 'estado:' O '' hace que funcione.

pero esto no suena como un muy buen enfoque, ya que tendré que hacer una sustitución de cadena para CADA una de las palabras clave que lucene usa: ¿Y O NO y otras? No sé cuántos

He intentado construir directamente la consulta en lugar de hacer queryParser.parse(), pero parece que esto no pasa por los analizadores, que es un gran problema.

+0

Podría analizar el término antes de construir la consulta manualmente – jpountz

Respuesta

3

Hay solo 3 palabras clave independientes en el Lucene query syntax - AND, OR y NOT. ("TO" también se usa, pero solo se reconoce dentro de una consulta de rango.)

Puede ser útil que su código de cotización solo necesite reconocer las palabras clave de Lucene realmente usadas como términos en su aplicación (como el "OR" arriba en tu ejemplo).

4

Hay un número de maneras de escapar de esto, el limpiador es escapar AND, OR, & NO con los principales barras invertidas por ejemplo:

\\AND \\OR \\NOT

alternativamente, el analizador de código no analizar sus equivalentes en minúsculas como operadores

+0

Así que estaba haciendo algo como esto 'searchTerm.replaceAll (" \\ b (AND | OR | NOT) \\ b "," \\\\\ \\\ $ 1 ");' para escapar de un Y literal utilizado en un cuadro de búsqueda ingresado por el usuario que finalmente termina en una consulta solr - w lo que encontré fue que se escapó de AND antes de la espera de las \\ works porque ya no hay una excepción de análisis, pero en realidad no busca la cadena literal. En Solr speak, el parámetro 'name: \\ AND' en una consulta no encuentra ningún resultado cuando debería devolver entradas con el nombre" Jim and john ". Minúscula podría ser el camino a seguir, al menos en Solr! – icyitscold

Cuestiones relacionadas