managed-schema配置文件详解

1.managed-schema是干嘛的?


Managed_schema是在使用solr建立core时的配置(core连接配置和索引库),solr根据它确定如何对文档建立索引到索引库中,每个core在建立前都需要设计好managed_schema。本文就managed_schema包含什么?如何设计managed_schema做说明。

2.managed-schema包含的内容

  1. types
  2. fields
  3. uniqueKey
  4. 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 指定过滤器

猜你喜欢

转载自blog.csdn.net/qq_42418169/article/details/112404927