Java中Solr索引机制疑问:仅查询name字段时是否仅索引该字段?
Solr索引机制:仅查询"name"字段时的索引构建逻辑
嘿,这个问题问得很务实!咱们直接说重点——Solr会不会只给你要查询的"name"字段建索引,完全取决于你在schema.xml(或者SolrCloud环境常用的managed-schema)里对每个字段的配置。
- 如果你只把"name"字段的
indexed属性设为true,其他字段都配置成indexed="false",那Solr只会给"name"字段构建索引,其他字段不会被纳入索引体系(当然你可以选择是否存储这些字段,方便后续获取原始数据)。 - 反过来,如果其他字段默认或显式设置了
indexed="true",那不管你之后会不会查询它们,Solr在文档提交时都会给这些字段建立索引。毕竟索引的构建是在文档写入阶段完成的,和后续的查询需求没有直接关联。
举个简单的schema配置例子更直观:
<!-- 这个字段会被构建索引,indexed默认值为true,也可以显式指定 --> <field name="name" type="text_general" indexed="true" stored="true"/> <!-- 这个字段仅存储原始数据,不会被索引 --> <field name="age" type="int" indexed="false" stored="true"/> <!-- 这个字段既不索引也不存储,提交后相当于丢弃 --> <field name="temp_info" type="string" indexed="false" stored="false"/>
所以总结一下:如果你只想让Solr针对"name"字段建索引,就需要确保其他所有字段的indexed属性都设置为false。这样做还能节省索引存储空间,提升索引构建的效率哦。
内容的提问来源于stack exchange,提问作者Błażej Rejnowski
相关产品推荐
相关产品推荐

