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
>
|