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