在SOLR中,为什么字段不被存储并且不被索引?

时间:2019-05-23 13:59:49

标签: solr lucene

在Solr的有关原子更新的文档中,他们提到字段应该不被索引并且不被存储。

https://lucene.apache.org/solr/guide/7_6/updating-parts-of-documents.html#in-place-update-example

  

仅当要更新的字段满足以下三个条件时,才使用此方法执行原子更新操作:

     

是非索引(indexed =“ false”),非存储(stored =“ false”),单值(multiValued =“ false”)数字docValues(docValues =“ true”)字段;

<field name="price" type="float" indexed="false" stored="false" docValues="true"/>

这样做的示例用例是什么?

这是否意味着它不可查询且未在响应中返回?

1 个答案:

答案 0 :(得分:1)

在这种情况下要理解的是,设置"docValues=true""index=true"的替代选择:仍然使字段“可查询”,但使用面向列(非反向)的索引。 / p>

  

[...]内部记录字段值的方法   对于某些目的(例如排序和构面)而言,   传统索引。

实际上,能够在sort / facet-dedicated-field 中进行原子更新是一个示例用例!

请记住,即使设置为"stored=false",仍可以获取启用了docValues的字段,例如,允许使用fl参数检索值。这是因为docValue以“始终”存储的方式,取决于默认情况下为“ Memory”的docValuesFormat(意味着doc值存储在堆中)。

DocValues字段还依赖于默认为true的useDocValuesAsStored,这意味着即使定义为stored="true",该字段的行为也像定义为stored="false"一样。