0
ストーリー: トランザクションアイデアのリストを特定のユーザー名クエリ「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));
私は新しいエントリを追加するために出回っ2つの戦略(重複エントリを避けるために)を試してみました。
- IndexWriter.updateDocumentには、格納するtransactionIdを保持するTermがあります。
- 現在のtransactionIdを検索する、それを削除し、それを保存:
です。したがって、LongPointを使用することも可能ですか? –
私はそれをお勧めしません。これを行うには 'updateDocument'を避け、代わりにdeleteを実行してから新しい文書を追加します。したがって、' Term'の代わりに削除する文書と照合するために 'Query'を使うことができます。私は通常識別子のために 'LongPoint'のような数値フィールドに対してお勧めします。それがちょうど数字で構成されている識別子の場合は、 'StringField'を使用してください。実際に数値(数値範囲のクエリが便利)ならば、 'LongPoint'が良い選択になります。 – femtoRgon