我是lucene的新手。我必须索引日期字段。
我正在使用lucene 3.0.0中的IndexWriter
构造函数。
IndexWriter writer = new IndexWriter(FSDirectory.open(indexDir), new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.UNLIMITED)
我的观点是:
为什么在未分析日期字段时需要分析器,而我使用Field.Index.NOT_ANALYZED
进行索引。
答案 0 :(得分:13)
您可以这种方式存储日期字段..
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
<强>更新强>
Field.Index NOT_ANALYZED
不使用索引字段的值 分析器,因此可以搜索。如 没有使用分析器的值 存储为单个术语。这是 对于像产品这样的独特ID很有用 号。
根据lucene javadoc,您不需要使用Field.Index NOT_ANALYZED
字段的分析器,但我认为设计IndexWriter
期望分析器索引数据的精确副本在存储方面效率不高搜索。