-1

私は 2 つの solr インデックスを持っています。インデックス A には 100000 個のドキュメントが含まれ、B には 110000 個のドキュメントが含まれています。A は B のサブセットです。A XOR B = 結果と削除結果の操作を実行する必要があります。

4

1 に答える 1

1

ここから回答:

ドキュメントが 100,000 個しかない場合は、すべてのドキュメント ID をダンプして差分を作成します。Linux ベースのシステムを使用している場合は、単純なツールを使用して実行できます。そのようなものは役に立ちます

curl "<a href="http://your.hostA:port/solr/index/select?*:*&fl=id&wt=csv">http://your.hostA:port/solr/index/select?*:*&fl=id&wt=csv" > /tmp/idsA
curl "<a href="http://your.hostB:port/solr/index/select?*:*&fl=id&wt=csv">http://your.hostB:port/solr/index/select?*:*&fl=id&wt=csv" > /tmp/idsB
diff /tmp/idsA /tmp/idsB | grep "<\|>" | awk '{print $2;}' | sed
's/\(.*\)/<id>\1<\/id>/g' > /tmp/ids_to_delete.xml

これでファイルができました。<delete>これで、そのファイルに " " と " "を追加して、</detele>curl を使用してそのファイルを solr にアップロードできます。

curl -X POST -d @/tmp/ids_to_delete.xml "<a href="http://your.hostA:port">http://your.hostA:port
/solr/index/upadte" 
于 2012-04-23T15:25:05.087 に答える