¿Cómo hacer que el Lucene QueryParser sea más indulgente?

Estoy usando Lucene.net, pero estoy etiquetando esta pregunta para las versiones .NET y Java porque la API es la misma y espero que haya soluciones en ambas plataformas.

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 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 evitar ParseExceptions al procesar consultas de los usuarios? Me parece que la mayoríausable La interfaz de búsqueda es aquella que siempre ejecuta una consulta, incluso si es una consulta incorrecta.

Parece que hay algunas estrategias posibles y complementarias:

"Limpie" la consulta antes de enviarla al QueryProcessorManeje las excepciones con graciaMostrar un mensaje de error inteligente al usuarioQuizás ejecute una consulta más simple, dejando el bit erróneo

Realmente no tengo grandes ideas sobre cómo hacer alguna de esas estrategias. ¿Alguien más ha abordado este problema? ¿Hay algún analizador "simple" o "elegante" que no conozca?

Respuestas a la pregunta(6)

Su respuesta a la pregunta