Java 带有空字段的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

我有一个桌面应用程序 实现lucene 3.6.2搜索引擎 用于数据库搜索。 数据库包含列 同时具有日期和字符数据类型 . 某些列还可以包含空字段。 Datetools还用于将日期转换为 Lucene分析用字符串 然而,当lucene不是 能够从中添加空字段 将日期列添加到文档容器 用于分析

我在下面介绍代码片段:

 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索引中是否设置了字段。