Мы используем Lucene для разработки поля произвольного текстового поиска для данных, доставляемых пользователю, как в случае папки «Входящие» электронной почты. Мы хотели бы разрешить для коробки обрабатывать даты, например 5/1/2011. Чтобы упростить задачу, мы ограничиваем текущую версию функции только двумя форматами даты:
mm/dd/yy
mm/dd/yyyy
Для нашего прототипа мы взломали процесс анализа запросов, чтобы попытаться предварительно обработать строку запроса для поиска этих двух шаблонов дат. Это было около 2 лет назад, и мы были на Lucene 2.4. Мне любопытно посмотреть, есть ли в Lucene какие-либо встроенные инструменты для принятия DateFormat и возврата TokenStream с любыми указанными датами. Просматривая javadocs для Lucene 2.9, я нашел класс:
org.apache.lucene.analysis.sinks.DateRecognizerSinkFilter
, который, кажется, делает то, что мне нужно, но он реализует SinkFilter, концепцию, которая, похоже, не документирована в Lucene Wiki. Кто-нибудь использовал этот фильтр раньше, и если да, то как его наиболее эффективно использовать?