0
故事: 我需要搜索一个transactionIds列表是一个给定的用户名查询,例如“Peter M *”。Lucene 6如何避免重复条目
问题:如何保持存储的transactionIds独特?
我已填充我的指数有下列文件:
Document doc = new Document();
doc.add(new StoredField(TRANSACTION_ID, data.getTransactionId()));
doc.add(new TextField(MARCHANT_NAME, data.getName(), Store.NO));
我已经尝试了媒体链接两种策略(避免重复的条目),以添加新条目。
- IndexWriter.updateDocument带有一个Term来存储transactionId。
- 搜索当前的transactionId,删除它,并将其存储:
我明白了。那么也可以使用LongPoint? –
我通常不会推荐它。要做到这一点,你想避免'updateDocument',而是做一个删除,然后添加一个新的文档,所以你可以使用一个'查询'来匹配文件删除,而不是'期限'。我通常建议不要使用数字字段,例如'LongPoint'来标识标识符。如果它是一个恰好由数字组成的标识符,则使用'StringField'。如果它实际上是一个数字(即数字范围查询会很有用),那么“LongPoint”将是一个不错的选择。 – femtoRgon