Solr可以看作是一个非关系型数据库,数据是保存在schema中,而每个schema里面的列就是filed。Field可以在schema.xml中定义:
从上面可以看到schema.xml文件中三个重要的部分为:
<fields>,包含了<field>、<dynamicField>
<uniqeKey>定义主键
<types>定义每个field的类型,以及如何对这个field进行解析(参照lucene中的FieldType)
Solr中的Field与Lucene中的是对应的,只需要了解相应的Field在Lucene中怎样配置即可。
下面介绍Solr中对Field的一些扩展支持:
Multivalued Field
多值Field,通常在同一个文档中,每个Field只存在一个值,如果将这个Field的多值属性设置为true,则这个Field可以保存多个值,例如:
在一篇文档中有如下属性:
Link有两个值,那么在schema.xml中可以设置一个为link的Field:
Dynamic Field
在<dynamicField>标签下定义,可以设置模糊匹配,例如:
在Document中所有后缀为_ss的field都适用这个Field.
例如schema.xml中内容如下:
可以看到所有以facebook为前缀和twitter为前缀的field的定义都是一样的,所以可以对原文档中对应的field定义如下:
那么在schema.xml中对应的内容就可以用以下语句替换:
Copy Field
就是根据一个类型的Field复制到另外一个Field。
<copyField>不是在<fields>标签的子元素,而是在外面定义:
Solr对非文本的结构化数据也进行了支持,具体可以查阅Solr文档。Solr中常用的Field如下:
学习Solr中的Field时候要对比关系型数据库(如Mysql),以及结合Lucene中的Field。