0

我有一个 solr Field 作为 -

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

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

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

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

该领域的可用性 -

  1. 此字段没有排序/分面。
  2. 仅使用显示值。

我想使用 solrJ 更快地获取数据。我无法找到任何有关是否stored=truemultivalued=true有助于性能的适当文档。

我知道 solrJ 对stored=true.

任何人都可以请指导一下。

4

1 回答 1

0

multiValued 与性能无关,它是关于允许一个字段在单个文档中具有多个值。如果您除了存储字段之外不需要做任何其他事情 - 并且返回的所有字段都兼容docValues="true"-使用 docValues

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

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

请注意,在查询时返回 DocValues 以及“常规”存储字段具有存储字段可能没有的性能影响,因为 DocValues 是面向列的,因此可能会产生额外的成本来检索每个返回的文档。

避免检索您不使用的字段 - 您可以使用solrQuery.setParam('fl', '...').

于 2018-01-23T10:23:01.263 回答