Как проиндексировать поле даты в люцене - PullRequest
6 голосов
/ 02 декабря 2010

Я новичок в люцене. Я должен индексировать поле даты. Я использую конструктор Follow IndexWriter в Lucene 3.0.0.

IndexWriter writer = new IndexWriter(FSDirectory.open(indexDir), new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED)

моя точка зрения такова: Зачем нужен анализатор, когда поля даты не анализируются, а при индексации я использовал Field.Index.NOT_ANALYZED.

1 Ответ

13 голосов
/ 02 декабря 2010

Вы можете сохранить поле даты таким способом.

Document doc = new Document();
doc.add(new Field("modified",
        DateTools.timeToString(f.lastModified(), DateTools.Resolution.MINUTE),
        Field.Store.YES, Field.Index.NOT_ANALYZED));

где f - файловый объект ...

Теперь используйте указанный выше документ для индексатора ...

оформить заказ, пример кода поставляется с lucene ... и следующей ссылкой ... http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/document/DateTools.html

UPDATE

Field.Index NOT_ANALYZED

Индексировать значение поля без использования Анализатор, поэтому его можно искать. Как анализатор не используется, значение будет хранится как один термин. Это полезно для уникальных идентификаторов, таких как продукт число.

Что касается Lucene Javadoc, вам не нужен анализатор для полей, использующих Field.Index NOT_ANALYZED, но я думаю, что в дизайне IndexWriter ожидает анализатор, так как индексирование точной копии данных неэффективно с точки зрения хранения и поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...