2010-12-02 27 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

相关问题