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
Solr 解决方案:部分文档更新还是加入?_Solr - Fatal编程技术网

Solr 解决方案:部分文档更新还是加入?

Solr 解决方案:部分文档更新还是加入?,solr,Solr,我在solr中有一个产品索引(该索引是通过从mysql/jdbc导入数据更新的) 产品可以在某些商店中提供,也可以不提供:现在我们在索引中有这个模型(商店是一个多值int字段) 将经常更改的字段存储在中,使用外部工具更新solr文档,仅更改数组中的值 这是在solr中建模的最佳模式吗? 最好先创建单独的文档,然后再加入?这取决于您经常做的事情,只更新整个文档可能没什么问题……但是,如果这将是一个问题,并且您希望由于不断更新而优化负载,您有几个选项: 您有一些限制(如何以数字形式对存储列表进行编码

我在solr中有一个产品索引(该索引是通过从mysql/jdbc导入数据更新的)

产品可以在某些商店中提供,也可以不提供:现在我们在索引中有这个模型(商店是一个多值int字段)

将经常更改的
字段存储在中,使用外部工具更新solr文档,仅更改数组中的值

这是在solr中建模的最佳模式吗? 最好先创建单独的文档,然后再加入?

这取决于您经常做的事情,只更新整个文档可能没什么问题……但是,如果这将是一个问题,并且您希望由于不断更新而优化负载,您有几个选项:

  • 您有一些限制(如何以数字形式对存储列表进行编码),但会起作用
  • 不同的集合,并如您所述跨它们连接

  • 我更喜欢1本身,与Solr的其余部分更为集成…3和4不适合imho。

    就地更新要求字段为单值字段,因此它不适合问题中给出的结构。我可能只会使用OP中给出的结构-我认为使用DIH比文档结构更像是一个性能问题。我在编辑中解决了这个问题…取决于存储的数量,但很可能信息可以编码为数字。如果编码(即作为位掩码),查询通常会更困难因此,这也取决于该字段的使用方式。以直截了当的方式进行,然后在问题出现时进行优化,这是一个好的计划(如您所领导的)。“经常”可能意味着每隔几分钟(从2到5分钟)。
    存储
    字段包含数百个值,并且总是在每个查询中使用在这种情况下,“就地更新”对我来说似乎很复杂。我将看一看外部文件,这对我来说是新的东西当然取决于你的索引大小,集群资源,有多少文档被更改等等,但每隔几分钟看起来并没有那么糟糕。做测试!
    {
     id:
     product_id:
     stores: [ store_id, store_id, ...] 
     ...
    }