Java Lucene 6如何避免重复条目
故事: 我需要搜索给定用户名查询的TransactionID列表,例如“Peter M*” 问题:如何保持存储的TransactionID的唯一性 我已使用以下文档填充索引:Java Lucene 6如何避免重复条目,java,lucene,Java,Lucene,故事: 我需要搜索给定用户名查询的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));
Document doc = new Document();
doc.add(new StoredField(TRANSACTION_ID, data.getTransactionId()));
doc.add(new TextField(MARCHANT_NAME, data.getName(), Store.NO));
我尝试了allready的两种策略(避免重复条目)来添加新条目
您正在使用
StoredField
作为交易ID字段。这意味着它可以从索引中检索,但没有索引,无法搜索,因此,它不能用作updateDocument
的键。改用StringField
。我明白了。所以也可以使用长尖点?我一般不推荐。要做到这一点,您需要避免更新文档
,而是先进行删除,然后再添加新文档,这样您就可以使用查询
来匹配要删除的文档,而不是使用术语
。我通常建议不要使用诸如LongPoint
之类的数字字段作为标识符。如果标识符恰好由数字组成,请使用StringField
。如果它实际上是一个数字(即,数字范围查询将非常有用),那么长点将是一个不错的选择。