我有一个solr Field as -
<dynamicField name="storeSKUColor_*" type="string" multiValued="true" indexed="false" stored="true" />
问题是这个字段在使用solrJ获取数据时花费了太多时间。
我想把这个字段改为 - stored="false" docValues="true"
。
Solr没有抛出任何错误,数据被正确编入索引。
该领域的可用性 -
我想使用solrJ更快地获取数据。我无法找到有关stored=true
或multivalued=true
是否有助于提高绩效的适当文档。
我知道solrJ对stored=true
的字段使用延迟加载。
任何人都可以就此提出指导。
答案 0 :(得分:0)
multiValued不是关于性能,而是关于允许一个字段在单个文档中具有多个值。如果您不需要执行除存储字段以外的任何操作 - 并且返回的所有字段都与docValues="true"
- use docValues兼容:
如果查询仅返回docValues字段,则性能可能会提高,因为返回存储的字段需要磁盘读取和解压缩,而在fl列表中返回docValues字段只需要内存访问。
如果没有,请在字段中使用docValues="false" indexed="false" stored="true"
,因为这应该是检索字段值的最快方法(但您可以根据用例对其进行基准测试)。
请注意,返回DocValues以及&#34;常规&#34;查询时存储的字段具有性能影响,存储的字段可能不会,因为DocValues是面向列的,因此可能会为每个返回的文档检索额外的成本。
避免检索您未使用过的字段 - 您可以使用solrQuery.setParam('fl', '...')
执行此操作。