Lucene删除文档问题

时间:2015-02-19 22:36:16

标签: java lucene

我目前正在使用Lucene 4.2.0并尝试删除特定IntField的特定文档。

以下是文档的结构和在索引中编写文档的代码:

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_42);
indexWriterConfig = new IndexWriterConfig(Version.LUCENE_42, analyzer);
index = new RAMDirectory();    

Document doc;
    try {
        doc = new Document();
        doc.add(new StringField(FILENAME, "document", Field.Store.YES));
        doc.add(new IntField(EPOCH, 10, Field.Store.YES));
        doc.add(new LongField(LEADER, 10000, Field.Store.YES));
        doc.add(new IntField(COUNTER, 0, Field.Store.YES));

        logger.info(doc.toString());
        writer.addDocument(doc);
   } finally {
        writer.commit();
        writer.close();
    }

我正在尝试根据COUNTER字段的具体值删除文档:

Query testQ = NumericRangeQuery.newIntRange(COUNTER, 0, 0, true, true);

IndexWriter writer = null;

     try {
          writer = new IndexWriter(index, indexWriterConfig);
          writer.deleteDocuments(testQ);

      } finally {

          if (writer != null) {
              writer.commit();
              writer.close();
          }
      }

执行上面的代码后,当我搜索索引中的文档时,我仍然可以看到该文档。

我不确定我做错了什么,但我想根据COUNTER Field的单个特定值删除文档。

我是Lucene的新手,也查找了范围查询仅代表单个值但无法找到任何相关帖子的问题。

(当我尝试使用相同的查询搜索文档时,它会正确返回结果,但删除时无法找到要删除的同一文档)

0 个答案:

没有答案