schema.xml 第一级的结构如下所示:这个例子不是一个完整的 xml ,但是给出了这个文件重要的部分
<schema>
<types>
<fields>
<uniqueKey>
<defaultSearchField>
<solrQueryParser defaultOperator>
<copyField>
</schema>
-------------------------------------------------------
schema.xml中字段类型定义
字段类型定义在 schema.xml 的 types 这个元素里头。这里是一个字段类型定义的例子
Solr 的一个字段类型包括四个部分:
- 字段类型名称,一个字段通过引用改名称来指定其是哪个类型的
- 实现类名称,表示该类型的字段通过这一实现类来处理
- 分析器,文本类型的字段会包含该描述,可以指定索引时用什么分析器,搜索这一类型字段时用什么分析器。
- 配置切词器就是在这个地方配置的。
- 字段属性
<fieldType name="textTight"
positionIncrementGap="100" >
<analyzer>
<tokenizer/>
<filter
synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter
generateWordParts="0" generateNumberParts="0"
catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter/>
<filter
language="English" protected="protwords.txt"/>
<filter/>
</analyzer>
</fieldType>
以上例子的第一行包含了字段类型名称,textTight,和字段的处理的实现类,solr.TextField。这一实现类用于保证字段可以被正确的处理。在这个文件里,一些事项类采用了缩写,solr.TextField其实就是 org.apache.solr.schema.TextField
---------------------------------查询解析操作符--------------------------------
在使用多个条件进行查询时,Solr 可能返回满足所有条件的结构或者满足部分条件的结果。operator 控制这一行为,operator 包含 AND 和 OR,AND 将返回满足所有条件的结果,OR将返回满足任一条件的结果。
在 schema.xml,使用 solrQueryParser 元素来控制使用 AND 还是 OR。默认 operator 的设置只在 lucene 查询时生效,对于 DisMax 和扩展的 DisMax 无效,DisMax 和扩展 DisMax 内部采用硬编码的方式使用了 OR 操作。
|
1
|
<solrQueryParser defaultOperator="OR"/>
|
------------------------------------默认搜索字段------------------------
在使用lucene查询解析器时,如果没有指定字段名称,将在 defaultSearchField 进行查询。DisMax 和 扩展的 DisMax 查询解析中不会使用这个值。
定义默认查询字段格式如下:
|
1
|
<defaultSearchField>text</defaultSearchField>
|
其中 text 为字段名称。
----------------------------------uniqueKey------------------------------
uniqueKey 元素用来表示一个文档的唯一值,类似数据库ID。尽管uniqueKey不是必须,但在程序设计过程中还是建议使用。举个例子,在更新一个文档时,需要通过uniqueKey来找到需要更新的文档。uniqueKey在schema中是这样定义的:
|
1
|
<uniqueKey>id</uniqueKey>
|
本文介绍了Solr中schema.xml文件的关键配置项,包括字段类型定义、查询解析操作符、默认搜索字段及uniqueKey等。通过这些配置,用户可以自定义索引和查询的行为。

被折叠的 条评论
为什么被折叠?



