1、core路径
${安装路径}\solr-8.8.2\server\solr
2、managed-schema路径
${安装路径}\solr-8.8.2\server\solr\conf
3、总体结构
<?xml version="1.0" encoding="UTF-8" ?>
<schema version="1.6">
<field .../>
<dynamicField .../>
<uniqueKey>id</uniqueKey>
<copyField .../>
<fieldType ...>
<analyzer type="index">
<tokenizer .../>
<filter ... />
</analyzer>
<analyzer type="query">
<tokenizer .../>
<filter ... />
</analyzer>
</fieldType>
</schema>
4、详解
4.1、field
<field name="propName" type="plong" indexed="false" stored="false" required="false" multiValued="false" />
field: 域,即字段;没有配置域不能用,配置的域才能用
name: 名称,需唯一,只能由字母、数字或下划线字符组成,不能以数字开头。
type: 类型别名,对应fieldType.name,必填
indexed: 是否索引,选填,默认true
stored: 是否存储,,选填,默认true
required: 是否必须,选填,默认false
multiValued: 是否存储多个值,选填,默认false
4.2、dynamicField
<dynamicField name="*_i" type="pint" indexed="true" stored="true"/>
dynamicField: 动态字段
name: 字段名规则,只支持通配符*,且只有前缀和后缀两种方式
其他属性,类比field配置
4.3、uniqueKey
<uniqueKey>id</uniqueKey>
定义唯一主键key,可自定义
提示:
- 在创建索引时必须指定唯一约束;
- 这里的唯一主键是指业务主键,并不是Document的主键;
- 唯一主键字段不可以是保留字段、复制字段,且不能分词。
4.4、copyField
<copyField source="age" dest="text" maxChars="256" />
copyField: 复制字段,允许将一个或多个字段的值填充到一个字段中。
source: 复制源,字段名,支持field和dynamicField。
dest: 目标字段名
用途1: 将多个字段内容填充到一个字段,来进行搜索
用途2: 对同一个字段内容进行不同的分词过滤,创建一个新的可搜索字段
理解: 一个关键字,在两个域中搜索
4.5、fieldType
<fieldType name="rank" class="solr.RankField"/>
filedType: 字段类型,即别名,与处理类关联
name: 类型名,对应filed.type。必填,名称仅包含字母、数字或下划线字符,不能以数字开头。
class: 用于存储和索引此类型数据的实现类的类名
参考学习: 其他博客