-1

我有两个 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 回答