Lucene 6如何避免重复输入

时间:2017-06-06 09:17:05

标签: java lucene

故事: 我需要搜索一个transactionIds列表作为给定的用户名查询,例如" Peter M *"。

问题:如何保持存储的transactionIds唯一?

我已使用以下文档填充了我的索引:

Document doc = new Document();
doc.add(new StoredField(TRANSACTION_ID, data.getTransactionId()));
doc.add(new TextField(MARCHANT_NAME, data.getName(), Store.NO));

我已经尝试了两种策略(以避免重复的条目)来添加新条目。

  1. IndexWriter.updateDocument,其中包含要存储的transactionId的术语。
  2. 搜索当前的transactionId,将其删除并存储:

1 个答案:

答案 0 :(得分:1)

您正在使用StoredField作为TRANSACTION_ID字段。这意味着它可以从索引中检索,但不会被索引,也无法搜索,因此,它不能用作updateDocument的键。请改用StringField