gpt4 book ai didi

solr - 文件的部分更新

转载 作者:行者123 更新时间:2023-12-04 17:19:41 24 4
gpt4 key购买 nike

我们要求我们目前在 SOLR 中索引的文档可能需要定期进行部分更新。更新可以是一个。添加新字段湾。更新现有字段的内容。我们模式中的一些字段被存储,其他的则没有。

SOLR 4 确实允许这样做,但必须存储所有字段。见 Update a new field to existing documenthttp://solr.pl/en/2012/07/09/solr-4-0-partial-documents-update/

问题:1. SOLR有没有办法做到这一点。我们过去曾尝试过 SOLR JOIN,但它并不适合我们所有的用例。

  1. 另一方面,elasticsearch、linkedin的senseidb或者其他文本搜索引擎能做到吗?

目前,我们通过在需要索引受影响的文档时重新索引来进行管理

谢谢

最佳答案

Solr 有存储字段的限制,这是正确的。底层 lucene 总是需要删除旧文档并索引新文档。事实上,lucene 段是一次性写入的,它永远不会回过头来修改现有的段,因此它只会将文档标记为已删除,并在合并发生时将它们真正删除。

基于 lucene 的搜索服务器尝试通过公开一个能够删除旧文档并自动重新索引新文档的端点来解决此问题,但必须有一种方法可以以某种方式检索旧文档。仅当您存储所有字段时,Solr 才能做到这一点。

Elasticsearch 默认将源文档存储在一个名为 _source 的特殊字段中。这正是您在索引时首先发送给搜索引擎的文档。顺便说一下,这是使 elasticsearch 类似于 NoSQL 数据库的功能之一。 Elasticsearch Update API允许您以两种方式更新文档:

  1. 发送一个新的部分文档,该部分文档将与现有文档合并(仍然删除旧文档并对合并结果进行索引
  2. 在现有文档上执行脚本并在删除旧文档后对结果进行索引

这两个选项都依赖于 _source 字段的存在。存储源可以被禁用,如果你禁用它,你当然会失去这个伟大的功能。

关于solr - 文件的部分更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com