Estamos utilizando Lucene para desarrollar un cuadro de búsqueda de texto libre para los datos entregados a un usuario, como en el caso de una bandeja de entrada de correo electrónico. Nos gustaría permitir que el cuadro maneje las fechas, por ejemplo 5/1/2011. Para facilitar las cosas, estamos limitando la versión actual de la función de sólo dos formatos de fecha:¿Cómo detectar una fecha en una consulta de búsqueda de texto libre de Lucene?
mm/dd/yy
mm/dd/yyyy
Para nuestro prototipo que hackeó el proceso de análisis de consulta para tratar de pre-proceso de la cadena de consulta para buscar estos dos patrones de fecha. Esto fue hace aproximadamente 2 años, y estábamos en Lucene 2.4. Tengo curiosidad por ver si hay alguna herramienta en la aplicación de fábrica de Lucene para aceptar un formato de fecha y devolver un flujo de datos TokenStream con cualquier fecha identificada. Mirando a través de los javadocs para Lucene 2.9, me encontré con la clase:
org.apache.lucene.analysis.sinks.DateRecognizerSinkFilter
que parece hacer lo que necesito, pero implementa un SinkFilter, un concepto que no parece ser documentados en el Wiki Lucene. ¿Alguien ha usado este filtro anteriormente y, de ser así, cuál es la forma más efectiva de usarlo?
Gracias por la respuesta! Voy a probar tu solución y publicar mis resultados. –
¡Genial! También puede implementar esto como un tokenizador en línea regular que emite la cadena original y la fecha en la misma posición. De esa manera, si, por ejemplo, su formato de fecha tuviera nombres de mes o fecha, podría buscarlos directamente. –