当用户创建文档时,我将日期添加到solr索引.每次数据更改如编辑或删除时,我是否必须重新索引整个数据?
在这种情况下,reindex意味着什么?当我做
$this->indexData(array(
'id' => $pid,
'title' => $data['titel']
));
Run Code Online (Sandbox Code Playgroud)
对于每个文档而言$solr->addDocuments,是否只覆盖现有数据?
我试图在添加/删除/编辑时重新索引整个索引但在删除某个字段后,它的信息似乎仍然在索引中.
有任何想法吗?
mor*_*rja 24
将文档索引到solr时,它将覆盖任何现有文档<uniqueKey/>(通常是id).所以是的,它会覆盖现有数据.
当您想要更改文档的单个字段时,您必须重新索引整个文档,因为solr不支持仅更新字段.因此,当您删除字段时,您必须在没有字段的情况下重新索引文档.这将覆盖现有数据.不要忘记commit最后送一个.
使用Solr 4,您可以更新文档的单个字段.请参阅Atomic_Updates
++以上.
此外,如果您有大量此类更改,则存在潜在问题:
当您在solr中"更新"文档时(正如Morja所说),这不是"就地"更新.会发生什么是Solr维护其文档的内部查找表,当您更新文档时,它必须保留重定向列表,以便当在倒置索引中命中指向"更新"文档的指针时,它知道转到新文档该文件的版本.
如果你有足够的内存,这很好,但最终Solr需要重建查找,当它耗尽该内存时跟踪所有的变化.这(根据我的经验)会导致意外的减速和不必要的优化.
对你来说可能不是问题,但它对我而言.(每小时更新千次)
| 归档时间: |
|
| 查看次数: |
18442 次 |
| 最近记录: |