【发布时间】:2017-10-28 23:33:03
【问题描述】:
我在索引中使用了少数StoredField 和TextField (Lucene 6.2.1)
对于每个文档,我都有自己的唯一 ID
如果我将字段创建为
Field docID = new TextField("docID", docId, Field.Store.YES);
我可以像下面这样删除文档
Field transactionIdField = new TextField("transactionId", transactionId, Field.Store.YES);
Term docIdTerm = new Term("docID", docId);
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig iwc = new IndexWriterConfig(analyzer);
iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
IndexWriter writer = repositoryWriters.getTargetIndexWriter(repositoryUuid);
// 4. remove document with docId
writer.deleteDocuments(docIdTerm);
LOG.log(Level.INFO, "Document removed from Index, docID: {0}", docId);
writer.commit();
但是如果我将字段创建为
Field docID = new SttoredField("docID", docId);
文档没有被删除
如何根据存储的字段值删除文档?
我想将其保留为 StoredField,以便用户无法根据 docID 搜索文档
【问题讨论】:
标签: search indexing lucene full-text-search