solr核心组成
solr的实例类似于关系数据库找那个的表结构,核心配置文件为 managed-schema
managed-schema 文件主要包含三部分:字段(Field),字段类型(FieldType) ,唯一键(uniqueKey)
solr采用的是一种反向索引,就是重关键字到文档的映射过程,保存这种映射这种信息的所以称为反向索引
使用分词组件将文档分成一个个单独的单词,去除标点符号,去除停词
- 使用语言处理组件 变为小写,将单词缩减为词根的形式,如cars到car等,将单词转变为慈耿形式如drove到drive等,语言处理组件处理得到的结果成为词
- 索引组件,利用得到的词创建一个字典,对词进行排序,合并相同的词和词出现的文档
solr 运行环境
需要运行在一个web容器中,4.x 需要jdk1.7 6.x jdk1.8
solr schema.xml
schema.xml 主要配置字段名及字段的类型等信息
field 字段
字段定义方式
name 字段名称
Type 字段类型
indexed 是否索引
stored 是否存储
require 是否必须
multivalued 是否多值dynamicField 动态字段
字段定义
name 字段名称 通过通配符来表示
type 字段类型,使用时候必须使用保存类型一致例如:
{“id”:”change”,”year_is”:30} year_is 字段并没有在schema.xml 中配置,通过*_is 动态字段来配置,字段类型为int类型uniqueKey 唯一主键
指定一个主键的字段,每个实例中必须有且只有一个唯一的主键
copyField 复制字段
source 来源字段
dest 目标字段
将源字段的内容复制到目标字段中,例如:如果要实时对标题和正文同时进行查询,需要定义一个新字段,将标题和正文复制到这个新字段,索引的时候,直接从这个新字段查询
FieldType 字段类型
name 名字
class 类名 也是solr中真正的类型的类名
如果fieldType 是solr.TextFiled类,可以配置分词器,
type:index (索引分词器),query(搜索分词器)
tokenizer:分词器
Filter:过滤器
例如:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 配置分词 <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> 查询分词 <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer>