将docValues与动态字段solr一起使用

时间:2018-01-23 10:08:06

标签: solr solrj solr-schema

我有一个solr Field as -

<dynamicField name="storeSKUColor_*" type="string" multiValued="true" indexed="false" stored="true" />

问题是这个字段在使用solrJ获取数据时花费了太多时间。

我想把这个字段改为 - stored="false" docValues="true"

Solr没有抛出任何错误,数据被正确编入索引。

该领域的可用性 -

  1. 此字段没有排序/分面。
  2. 仅显示值 被使用。
  3. 我想使用solrJ更快地获取数据。我无法找到有关stored=truemultivalued=true是否有助于提高绩效的适当文档。

    我知道solrJ对stored=true的字段使用延迟加载。

    任何人都可以就此提出指导。

1 个答案:

答案 0 :(得分:0)

multiValued不是关于性能,而是关于允许一个字段在单个文档中具有多个值。如果您不需要执行除存储字段以外的任何操作 - 并且返回的所有字段都与docValues="true" - use docValues兼容:

  

如果查询仅返回docValues字段,则性能可能会提高,因为返回存储的字段需要磁盘读取和解压缩,而在fl列表中返回docValues字段只需要内存访问。

如果没有,请在字段中使用docValues="false" indexed="false" stored="true",因为这应该是检索字段值的最快方法(但您可以根据用例对其进行基准测试)。

  

请注意,返回DocValues以及&#34;常规&#34;查询时存储的字段具有性能影响,存储的字段可能不会,因为DocValues是面向列的,因此可能会为每个返回的文档检索额外的成本。

避免检索您未使用过的字段 - 您可以使用solrQuery.setParam('fl', '...')执行此操作。