故事: 我需要搜索给定用户名查询的 transactionId 列表,例如“Peter M*”。
问题:如何保持存储的 transactionId 唯一?
我已使用以下文档填充索引:
Document doc = new Document();
doc.add(new StoredField(TRANSACTION_ID, data.getTransactionId()));
doc.add(new TextField(MARCHANT_NAME, data.getName(), Store.NO));
我已经尝试了两种策略(以避免重复条目)来添加新条目。
- IndexWriter.updateDocument,其中包含要存储的 transactionId 的 Term。
- 搜索当前transactionId,删除并存储:
最佳答案
您正在使用 StoredField
作为 TRANSACTION_ID 字段。这意味着它可以从索引中检索,但未编入索引且无法搜索,因此它不能用作 updateDocument
的键。请改用 StringField
。
关于java - Lucene 6 如何避免重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44386004/