lucene - que - elasticsearch tutorial
cómo escaparse correctamente de O y Y en una consulta lucene? (2)
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.
Lo he visto citando OR para que la consulta se convierta en ''estado:'' O '''' lo hace funcionar.
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 usa lucene: ¿Y O NO y otras? No sé cuántos
Intenté construir directamente la consulta en lugar de hacer queryParser.parse (), pero parece que esto no pasa por los analizadores, que es un gran problema.
Solo hay 3 palabras clave independientes en la sintaxis de consulta de Lucene : 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 utilizadas como términos en su aplicación (como la "O" de arriba en su ejemplo).
Hay varias maneras de escapar de esto, el limpiador debe escapar Y, O, y NO con las barras diagonales inversas, por ejemplo:
//AND //OR //NOT
alternativamente, el analizador de código no analizará sus equivalentes en minúsculas como operadores