Estoy usando Lucene.net, pero estoy etiquetando esta pregunta para ambas versiones .NET y Java porque la API es la misma y espero que haya soluciones en ambas plataformas.¿Cómo hacer que Lucene QueryParser sea más indulgente?
Estoy seguro de que otras personas han abordado este problema, pero no he podido encontrar buenas discusiones o ejemplos.
Por defecto, Lucene es muy exigente con la sintaxis de las consultas. Por ejemplo, acabo de recibir el siguiente error:
[ParseException: Cannot parse 'hi there!': Encountered "<EOF>" at line 1, column 9.
Was expecting one of:
"(" ...
"*" ...
<QUOTED> ...
<TERM> ...
<PREFIXTERM> ...
<WILDTERM> ...
"[" ...
"{" ...
<NUMBER> ...
]
Lucene.Net.QueryParsers.QueryParser.Parse(String query) +239
¿Cuál es la mejor manera de prevenir ParseExceptions al procesar consultas de los usuarios? Me parece que la interfaz de búsqueda más utilizable es una que siempre ejecuta una consulta, incluso si puede ser una consulta incorrecta.
Parece que hay algunas estrategias posibles y complementarios,:
- "limpia" la consulta antes de enviarla a los QueryProcessor
- excepciones controlar correctamente
- muestran un inteligente mensaje de error al usuario
- Quizás ejecute una consulta más simple, dejando fuera del bit erróneo
Realmente no tengo muchas ideas sobre cómo hacer cualquiera de esas estrategias. ¿Alguien más ha abordado este problema? ¿Hay analizadores "simples" o "graciosos" que no conozca?
tuve el problema ParseException y utilicé esta solución porque mis usuarios no utilizarán la sintaxis avanzada. Gracias ! – Costo