两个solr指数之间的差异

时间:2012-04-17 05:17:29

标签: solr lucene search-engine nutch

我有两个solr索引,索引A包含100000个文档,B包含110000个文档,A是B的子集,我必须执行操作 XOR B =结果 并删除结果。

1 个答案:

答案 0 :(得分:1)

来自here的答案:

如果只有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"