Java 带有空字段的Lucene文档容器
我有一个桌面应用程序 实现lucene 3.6.2搜索引擎 用于数据库搜索。 数据库包含列 同时具有日期和字符数据类型 . 某些列还可以包含空字段。 Datetools还用于将日期转换为 Lucene分析用字符串 然而,当lucene不是 能够从中添加空字段 将日期列添加到文档容器 用于分析 我在下面介绍代码片段:Java 带有空字段的Lucene文档容器,java,lucene,Java,Lucene,我有一个桌面应用程序 实现lucene 3.6.2搜索引擎 用于数据库搜索。 数据库包含列 同时具有日期和字符数据类型 . 某些列还可以包含空字段。 Datetools还用于将日期转换为 Lucene分析用字符串 然而,当lucene不是 能够从中添加空字段 将日期列添加到文档容器 用于分析 我在下面介绍代码片段: doc = new Document(); if(rs.getDate("DATE_OF_LETTER")== null) { doc.ad
doc = new Document();
if(rs.getDate("DATE_OF_LETTER")== null)
{ doc.add(new Field("date_of_letter","",Field.Store.YES,Field.Index.ANALYZED)); }
else {
doc.add(new Field("date_of_letter",DateTools.dateToString(rs.getDate("DATE_OF_LETTER"),
DateTools.Resolution.DAY),Field.Store.YES,Field.Index.ANALYZED));
}
if(rs.getDate("DATE_RECEIVED")== null)
{ doc.add(new Field("date_received","",Field.Store.YES,Field.Index.ANALYZED)); }
else {
doc.add(new Field("date_received",DateTools.dateToString(rs.getDate("DATE_RECEIVED"),
DateTools.Resolution.DAY),Field.Store.YES,Field.Index.ANALYZED));
}
if(rs.getString("REMARKS")== null)
{ doc.add(new Field("remarks","",Field.Store.YES,Field.Index.ANALYZED)); }
else {
doc.add(new Field("remarks",rs.getString("REMARKS"),Field.Store.YES,Field.Index.ANALYZED)); }
if(rs.getDate("DATE_DISPATCHED")== null)
{ doc.add(new Field("date_dispatched","",Field.Store.YES,Field.Index.ANALYZED)); }
else {
doc.add(new Field("date_dispatched",DateTools.dateToString(rs.getDate("DATE_DISPATCHED"),
DateTools.Resolution.MINUTE),Field.Store.YES,Field.Index.ANALYZED));
}
}
iw.addDocument(doc);
}
}
任何建议 这一行:
doc.add(new Field("date_received","",Field.Store.YES,Field.Index.ANALYZED));
什么都没做。没有索引。它可能会存储字段(我不确定,马上就可以),但它肯定不会以任何方式被索引,因此无法搜索。Lucene为令牌编制索引,空字符串没有令牌,因此没有索引,也没有搜索
如果希望能够搜索空值,则应为其索引占位符值,例如
doc.add(new Field("date_received","null",Field.Store.YES,Field.Index.ANALYZED));
当您事后检查索引时,是否有任何错误,或者字段值只是空的?我在netbeans控制台上没有收到错误,即使有点击,但是lucene没有返回任何结果。还有,我该如何检查索引呢?我是lucene的新手。这里有一个工具,你可以检查索引:-看看它,检查lucene索引中是否设置了字段。