managed-schema配置文件详解
作者:互联网
文章目录
- 1.managed-schema是干嘛的?
- 2.managed-schema包含的内容
- field(域)
- dynamicfield(动态域)
- uniqueKey
- copyfield(复制域)
- filedType(域类型)
1.managed-schema是干嘛的?
Managed_schema是在使用solr建立core时的配置(core连接配置和索引库),solr根据它确定如何对文档建立索引到索引库中,每个core在建立前都需要设计好managed_schema。本文就managed_schema包含什么?如何设计managed_schema做说明。
2.managed-schema包含的内容
- types
- fields
- uniqueKey
- copyField
managed-schema文档的格式如下:
<schema>
<types>
<fields>
<uniqueKey>
<copyField>
</schema>
field(域)
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
属性:
属性 | 作用 |
---|---|
name | 指定域的名称(自定义) ,必须要保证唯一 |
type | 指定域的类型 |
indexed | boolean值,指定是否索引 是∶(将分好的词进行索引,索引的目的,就是为了搜索)否∶不索引,也就是不对该field域进行搜索。 |
stored | 是:将field域中的内容存储到文档域中。存储的目的,就是为了搜索页面显示取值用的 否:不将field域中的内容存储到文档域中。不存储,则搜索页面中没法获取该field域的值。 |
required | boolean值 是否必须 |
multiValued | boolean值 是否多值,比如查询数据需要关联多个字段数据,一个 Field存储多个值信息I必须将multiValued设置为true. |
dynamicfield(动态域)
<dynamicField name="*_is" type="pint" indexed="true" stored="true" multiValued="true"/>
name为*_j,定义它的type为int,那么在使用这个字段的时候,任何以_j结果的字段都被认为符合这个定义,
dynamicfield与field区别就在是动态匹配,例如:输入a_1就会按照*_is来匹配认为是个int
uniqueKey
<uniqueKey>id</uniqueKey>
其中的 id是在 Field标签中已经定义好的域名,而且该域设置为 required为 trueo一个managed-schema文件中必须有且仅有一个唯一键,表示查询到的记录的唯一性,有一个同样的ID记录,这个记录就不能再放进来了
copyfield(复制域)
应用场景:我们在搜索时比如输入java,一篇文章分为标题、简介、内容等很多字段,输入的关键字需要制定solr 中的域进行检索,不可能从一个表中将所有字段进行索引,因为有些字段不需要索引,所以出现copyField域,把多个域的关键词复制到同一个域,多个域时,可以放到一个域中。就不用定义那么多域了。搜索比较方便,说白就是把标题放到文章主体中搜索
实例:Source:是 Field域的名称
Dest:是destination的缩写目标域
使用案例
1.将两个普通的field放进复制域中,例如下表的title和author
2. 使用复制域,将两个域进行索引检索
3.该域名field name="text"即是复制域
filedType(域类型)
分词器
分词器也是域类型
分词器的属性:
属性 | 作用 |
---|---|
name | 指定域类型的名称 |
class | 指定该域类型对应的solx.的类型 |
analyzer | 指定分析器,其中的Iype: index、query,分别指定搜索和索引时的分析器 |
tokenizer | 指定分词器 |
Filter | 指定过滤器 |
标签:managed,配置文件,索引,指定,field,分词器,schema 来源: https://blog.csdn.net/qq_42418169/article/details/112404927