使用已删除的记录更新solr索引

时间:2013-06-11 08:45:40

标签: solr

我试图弄清楚如何更新已删除记录的索引。我正在从数据库索引。我在数据库中搜索文档,将它们放入数组中并通过创建SolrInputDocument对它们进行索引。

所以,我无法弄清楚如何更新已删除记录的索引(因为它们现在不存在于数据库中)。

我正在使用php-solr-pecl扩展程序。

3 个答案:

答案 0 :(得分:0)

您需要与Solr分开处理文件的删除 索尔不会为你办理。
如果是增量,则需要维护从数据库中删除的文档,然后触发删除查询以清除索引。
为此,您必须维护时间戳并删除标记以标识文档。 如果是Full,您可以清理索引并重新索引所有索引 但是,如果出现故障,您可能会丢失所有数据。

Solr DIH为相同的

提供了一些处理

答案 1 :(得分:0)

在数据库表上创建一个删除触发器,它将删除的记录ID插入另一个表中。(或者boolean字段“deleted”并标记记录而不是实际删除它,考虑到权衡我会选择触发器)

偶尔根据“已删除”表对索引进行批量删除,同时将其从表本身中删除。

答案 2 :(得分:0)

我们遇到了同样的问题,并提出了批量删除方法。

我们创建了一个程序,它将根据uniqueid从SOLR中删除文档,如果SOLR中存在唯一ID但数据库中没有,则可以从SOLR中删除该文档。

(从SOLR获取uniqueid列表)减去(数据库中的uniqueid列表)

您可以使用SQL减去获取属于需要删除的文档的uniqueid列表。

否则你可以在JAVA方面做任何事情。从数据库中获取列表,从solr获取列表。在2列表和基于此的删除之间进行比较。对于大量文档,这将丢失得更快。您可以使用二进制搜索方法进行比较..

这样的东西
Collections.binarySearch(DatabaseUniqueidArray, "SOLRuniqueid");