2010-12-02 28 views
5

我是lucene的新手。我必須索引日期字段。我使用的是以下的IndexWriter構造函數在lucene 3.0.0中。如何在lucene中索引日期字段

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

我的觀點是: 爲什麼需要它不分析日期字段時,分析儀,而索引我用Field.Index.NOT_ANALYZED

回答

10

您可以日期字段存儲以這種方式..

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

其中f是一個文件對象...

現在使用的IndexWriter上述文件...

結賬示例代碼附帶lucene ...以及以下鏈接... http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/document/DateTools.html

UPDATE

Field.Index NOT_ANALYZED

指數不使用 的分析,因此它可以被搜索字段的值。由於 沒有使用分析器,所以將該值作爲單個項存儲爲 。這是 對於獨特的Ids有用,如產品 數字。

按照Lucene的的javadoc你不需要分析儀使用Field.Index NOT_ANALYZED領域,但我認爲設計的IndexWriter期待一個分析器索引數據的精確副本是不是在存儲和搜索方面的高效。

+0

我使用了相同的文件,你提到的索引,但我的觀點是爲什麼我需要在Indexwriter對象的分析器,而我使用Field.Index.Not_Analyzed – Romi 2010-12-02 09:56:14

相關問題