2011-07-05 19 views
3

20万アイテムこれらの項目を索引付けすると、索引にバッチで追加されます。Solrインデックスの重複 - 2回以上追加されたアイテム

これらのすべてのアイテムのおよそ5%が2回以上インデックスされているため、重複問題が発生します。

ログを確認すると、実際にこれらの項目が実際に2回(またはそれ以上)追加されていることが実際に分かります。しばしばそれらの間に2〜3分の間隔で、そしてそれらの間に他のアイテムもあります。

インデックス作成をトリガーするWebサーバーは、負荷分散された環境(2つのWebサーバー)にあります。ただし、実際のインデックス作成を行うWebサーバーは単一のWebサーバーです。ここで

solrconfig.xmlのconfig要素の一部です:

<indexDefaults> 
..... 
<mergeFactor>10</mergeFactor> 
<ramBufferSizeMB>128</ramBufferSizeMB> 
<maxFieldLength>10000</maxFieldLength> 
<writeLockTimeout>1000</writeLockTimeout> 
<commitLockTimeout>10000</commitLockTimeout> 

<mergePolicy class="org.apache.lucene.index.LogByteSizeMergePolicy"> 
<double name="maxMergeMB">1024.0</double> 
</mergePolicy> 

<mainIndex> 
<useCompoundFile>false</useCompoundFile> 
<ramBufferSizeMB>128</ramBufferSizeMB> 
<mergeFactor>10</mergeFactor> 

私はSolrの1.4.1とTomcat 7.0.16を使用しています。また、私は最新のSolrNETライブラリを使用しています。

この重複の原因にはどのようなものがありますか?すべての入力をありがとう!

答えて

5

あなたの質問に完全に私はスキーマを知ることができるはずです。スキーマにはユニークなIDフィールドがあり、dbのユニークなキーのように機能し、ドキュメントの一意の識別子が一意のキーになっていることを確認してから、重複が上書きされて1つの値が保持されます。

+0

ユニークな識別子の問題は、これがすべてだったことです。乾杯! –

+0

私は私のsolr-indexに入れたデータベースから2つのテーブルを得ました。どちらも "id"という名前のユニークなキーを持っています。私の2つのテーブルは、上書きのためにsolrとエントリで一緒にマージされます。これを解決するには? – Rubinum

+0

本当にこれらのレコードを1つの名前空間にマージする必要がありますか?レコードが異なるエンティティを表す場合は、2つの別個のコアを使用することを検討する必要があります。それ以外の場合は、idをテーブルの前に付けてidをテーブル間でユニークにすることです。 – Umar

4

スキーマの一意のIDとしてマークされたフィールドに、同じ値を持つ2つのドキュメントを持つことはできません。同じ値を持つ2つのドキュメントを追加すると、前のドキュメントを上書き(置き換え)するだけです。

あなたの間違いであり、ドキュメントが実際には同じではないように聞こえます。

スキーマとIDフィールドが正しいことを確認してください。

0

実際には、追加したすべての文書は自動Solrの自身のUUIDの種類によって、一意のキーを生成しています:それはGUIDを取得するので

<field name="uid" type="uuid" indexed="true" stored="true" default="NEW"/> 

をので、どの文書がインデックスに追加は、新しいものとみなされます。しかし、ここでは他のコードに問題があると思います。コードを更新するときに、インデックスを更新するときにインデックスにアイテムを追加するコード。

私は戻ってきます!今までありがとう!

1

この場合、解決策は、コードからのドキュメントの一意のIDを(または一意のIDとしてフィールドの1つを定義するために)生成することができます。 SOLR。

この場合、更新する文書が上書きされ、再作成されないことを確認します。

0

これで、インデックスを更新するコードにいくつかのバグがあることが判明しました。更新する代わりに、すでに存在していたとしても、常にインデックスに追加されたドキュメントがありました。

Solrインデックスのすべてのドキュメントに独自のGUIDがあるため、上書きされませんでした。

ありがとうございました!

+1

あなたは、schema.xmlとsolrconfig.xmlだけでなく、ドキュメントのインデックスに使用したcurlコマンドのような詳細をいくつか提供できます。 ITはこのページのロットをより有用にするでしょう。 –

関連する問題