schema.xml是什么?
schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化,是否存储项向量等等。
schema.xml属性介绍
a、schema.xml配置文件的根元素就是schema, 有个name属性,可自定义,如下:<schema name="example" version="1.6">
b、schema.xml配置文件的根元素下主要有两个标签:field和fieldType,field表示域(类比为表字段),用来定义域,fieldType用来定义域类型(类比为字段类型)。
field属性介绍
a、name: 表示域的名称,必填项
b、type: 域类型的名称,与fieldType元素的name属性值对应,必填项
c、indexed: true即表示需要对该域进行索引,一般如果你需要在该域上进行查询或排序时,则需要配置为true, 默认值为false
d、stored: 表示是否需要把域值存储到硬盘上,查询的结果要显示哪个字段,就将属性值设为true
e、required:表示该域是否必须有值
f、multiValued: 表示这个域是否可以存储多个值,若设置为true,即表示这是一个多值域
dynamicField
动态域,类似于普通的field,区别在于name使用通配符匹配,这样可以模糊匹配多个域(类似于表里面冗余了很多有规律的扩展字段,为的是在业务需要时,不用修改schema结构。修改结构意味着需要重启,需要中断业务)。系统根据域类型内置了很多动态域,比如:*_i、*_s等等
copyField
复制域,表示把某个域(可以是多个域)的值复制到一个目标域上面,举例:
<field name="keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="code" dest="keywords"/>
<copyField source="name" dest="keywords"/>
如上配置就表示把code和name这两个域的值全部复制到keywords这个新域上面,需要注意:source域中有一个是多值域,则dest域就为多值域