如何在lucene中索引日期字段

Rom*_*omi 6 java lucene date

我是lucene的新手.我必须索引日期字段.我IndexWriter在lucene 3.0.0中使用了以下构造函数.

IndexWriter writer = new IndexWriter(FSDirectory.open(indexDir), new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED)
Run Code Online (Sandbox Code Playgroud)

我的观点是:为什么在未分析日期字段时需要分析器,而我使用的索引Field.Index.NOT_ANALYZED.

Fav*_*ius 13

您可以以这种方式存储日期字段.

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

其中f是文件对象...

现在使用上面的文档作为索引编写者......

结帐示例代码附带lucene ...以及以下链接... http://lucene.apache.org/java/2_2_0/api/org/apache/lucene/document/DateTools.html

UPDATE

Field.Index NOT_ANALYZED

不使用分析器索引字段的值,因此可以搜索它.由于不使用分析器,因此该值将作为单个术语存储.这对于产品编号等唯一ID非常有用.

根据lucene javadoc,您不需要使用分析器进行字段使用,Field.Index NOT_ANALYZED但我认为设计时IndexWriter期望分析器将数据的精确副本编入索引在存储和搜索方面效率不高.