solr核心managed-schema配置详解
managed-schema定义了加入索引的数据的数据类型。主要包括types和fields以及其他一些缺省设置。
注:schema.xml里有一个uniqueKey的配置,这里将id字段作为索引文档的唯一标识符,非常重要。
<?xml version="1.0" encoding="UTF-8"?>
<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
<schema name="testCore" version="1.2">
<!-- 唯一键,定义唯一键的字段的 required 属性必须为 true -->
<uniqueKey>ID</uniqueKey>
<!-- 字段类型的定义
常用属性
name:字段类型名称
class:使用什么方式处理该类型
-->
<fieldType name="int" class="solr.TrieIntField"/>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="text" class="solr.TextField"/>
<!-- 配置分词 -->
<!-- smartcn分词器,自动分词 -->
<fieldType name="text_smartcn" class="solr.TextField">
<!--索引时候的分词-->
<!-- isMaxWordLength:指分词的细粒度,可以分别制定index索引和query查询的分词细粒度,
建议将index的isMaxWordLength设置成false,这样就采用最细分词,
是索引更精确,查询时尽量能匹配,而将query的isMaxWordLength
设置为true,采用最大分词,这样能够使查询出来的结果更符合用户的需求
-->
<analyzer type="index" isMaxWordLength="false">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<!--查询时候的分词-->
<analyzer type="query" isMaxWordLength="true">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
<!-- ik分词器,可自定义分词 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
</analyzer>
</fieldType>
<!-- 配置字段属性
常用属性
name:字段名,对应数据源的字段名
type:字段的类型,对应 fieldType 节点的 name
indexed:是否需要建立索引 true|false
stored:是否需要存储这个值,决定了搜索结果中是否有这个值
default:该字段的缺省值
required:添加文档时,该字段是否必须存在 true|falsse
docValues:是否需要添加一个 docValues 域,docValues是一种记录doc字段值的
一种形式,这对 facet 查询,group 分组,排序,function 查询有好处
-->
<field name="ID" type="int" required="true" stored="true"/>
<field name="title" type="text_ik" indexed="true" stored="true"/>
<field name="author" type="string" indexed="true" stored="true"/>
<field name="content" type="text_ik" indexed="true" stored="true"/>
<field name="lastUpdateTime" type="int" indexed="true" stored="true"/>
<field name="isDelete" type="string" indexed="true" stored="true"/>
</schema>