首先弄清楚几个概念:
Document:Solr的信息的基本单位的是Document,它是一组描述某些事物的数据集合。
Field:Document的主要构成单元,是更具体的信息描述。
其实大家可以这样理解,Document 对应于我们Java代码中的一个类,而Field,则是类中的一个属性。
Field Analysis:就是solr如何对传进来的数据进行处理,如果构建索引。假设有个个人简介的Field,他里面包括了很多单词,我们需要在构建索引完之后,通过检索某个单词就能查询到这个人,那么我们就需要对每个单词都进行索引,但是,一句话有很多语气助词,如果a an or and not ,这些词我们又不需要为他们建索引,在构建索相的时候,需要排除出去。那么那些单词我们要建索引,那些又不需要列,这个分析出过程,我们就称为:field Analysis.
Field Type:告诉solr如何去处理某个field的数据,以及这个Field在查询的时候处理。
一个Field Type包括如下四部分信息:
- 名字,name
- 实现类名,也就是solr中真正的类型的类名。
- 如果FieldType 是 TextFiled类型,即还有analysis属性
- 属性
---------------------------------------
大致清楚以上概念以后,我们再来继续往下看。 那么这些东西在那里定义的列, 答案是在你的核心的schema.xml中。 如我们例子是在:${solr_home}/collection1/schema.xml
我们上面所说的Field Type 则对应于schemea.xml中的<types>下面的<fieldType>,solr中的fieldType类型有很多,而常用的有如下几个:
- IntField
- LongField
- StrField
- TextField
- DateField
接下来说说<fieldType>结点的几个常用属性:
- indexed 是否为该 field建索引
- stored 是否存储该field的值,存储以后,可以获取到值,否则会获取到Null
- multiValued 是否是多值
关于这些属性,什么时候有什么用途,给出一个二维矩阵图: