Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更新solr索引?_Solr - Fatal编程技术网

如何更新solr索引?

如何更新solr索引?,solr,Solr,当用户创建文档时,我将日期添加到solr索引中。每次数据更改(如编辑或删除)时,我是否必须重新为整个数据编制索引 在这种情况下,reindex是什么意思?当我这样做的时候 $this->indexData(array( 'id' => $pid, 'title' => $data['titel'] )); 对于每个文档和do$solr->addDocuments,它是否只是覆盖已有的数据 我试图在add/delete/edit上重新索引整个索引

当用户创建文档时,我将日期添加到solr索引中。每次数据更改(如编辑或删除)时,我是否必须重新为整个数据编制索引

在这种情况下,reindex是什么意思?当我这样做的时候

$this->indexData(array(
        'id' => $pid,
        'title' => $data['titel']
));
对于每个文档和do
$solr->addDocuments
,它是否只是覆盖已有的数据

我试图在add/delete/edit上重新索引整个索引,但删除某个字段后,它的信息似乎仍在索引中


有什么想法吗?

当您将一个文档索引到solr时,它将用相同的
覆盖任何现有文档,这通常是id。因此,是的,它会覆盖现有数据

当您想要更改文档的单个字段时,您必须重新索引整个文档,因为solr不支持仅更新字段。因此,当您删除一个字段时,您必须重新索引没有该字段的文档。这将覆盖现有数据。不要忘记在最后发送一个
commit

使用Solr 4,您可以更新文档的单个字段。请参见上文所述

此外,如果您有大量这样的更改,则存在一个潜在问题:

当您在solr中“更新”文档时(正如Morja所说),这不是“就地”更新。发生的情况是,Solr维护其文档的内部查找表,当您更新文档时,它必须保留重定向列表,以便在反向索引中命中指向“更新”文档的指针时,它知道要转到该文档的新版本

如果您有足够的内存,这是很好的,但最终Solr将需要在耗尽内存时重建查找,以跟踪所有更改。根据我的经验,这会导致意外的减速和不必要的优化


对你来说可能不是问题,但对我来说是。(每小时超过千次更新)

问题可能是更新后您没有提交文档(这是一个删除和插入操作),但过于频繁的提交可能会触发优化,因此请小心


您无需重新编制整个数据的索引,但整个文档必须使用更新的文档重建。

有了如此大量的更新,您如何防止一个用户覆盖另一个用户的编辑?