摘要: Solr的Filed中有很多参数,其中的index和store参数让人有点犯晕。
消失的Field
<field name="description_s" type="text" indexed="false" stored="false" required="false" />
- 1
上面的这个Field的index和store属性都设置为false。如果你插入一片含有该field的doc到Solr,你会发现不能query这个field,就好像刚才插入的数据丢失了。
异想天开的设计
有时候你不希望你的数据被索引或存储,那么你就可以设置这两个参数都为FALSE。对于dynamicField设置的比较宽泛,通过上面这种设置就可以把某一种数据排除掉。
<dynamicField name="*_s" type="text" indexed="true" stored="true"/>
- 1
这种dynamicField是一种常见的配置,可以指定一个具体的Field来覆盖这种设计。
索引?存储?
通过indexed=true
可以使得一个field可以被搜索,如果你有一个字段title
设置的是indexed=true
,那么q=title:csdn
就是在搜索标题中含有csdn的document。如果你设置indexed=false
,就算你有符合的数据也无法搜索出来。 stored=true
意味着你可以在结果中看到这个field,通过fl
参数可以控制是否在结果中显示,如果你设置stored=false
,就算你有符合的数据看不到该field。
你可以这样理解:
Indexed=true 就是可以查询
Stored=true 就是内容存储
设置关键是只设置需要查询的Indexed=true,需要和查询结果一起返回的字段内容设置Stored=true,其他就是false,节约索引大小和资源。
indexed表示需不需要建立索引,以便之后对这个field进行查询;
stored表示需不需要随索引同时存储这个field本身的内容,以便查询时直接从结果中获取该内容,一般大数据(比如文件内容本身)不会和索引一起保存,节省资源,防止索引过大。