我目前正在使用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的新手,也查找了范围查询仅代表单个值但无法找到任何相关帖子的问题。
(当我尝试使用相同的查询搜索文档时,它会正确返回结果,但删除时无法找到要删除的同一文档)