您的位置:首页 > 其它

Solr6.0.0以上分词器配置[中文]

2017-09-27 15:09 183 查看
solr有一个分词解析的功能,能够将单词或者中文字符拆分成独立的词语 如:中华人民共和国 -->中华 人民 共和国

这个分词器的配置是在solrhome\configsets\sample_techproducts_configs\conf中managed-schema文件,我们不得不提6.0.0之前

solrconfig.xml:每一个solrcoe对应的核心配置,配置了请求路径的映射及各种解释器,位于{solehome}/{solrcore}/conf/solrconfig.xml

managed-schema:在solr 6以后,这个文件没有扩展名,它用于放置索引的字段相关配置,在6.0版本以前,这个文件名叫scheme.xml,需要用户自己维护

关于managed-schema配置:放置了字段映射及分词器相关的配置

field:字段,创建索引所需要的字段名,在solr里它也被称为“域”,一个字段就是一个域,我们搜索时,搜索的是“域”
fieldType:字段类型,也称“域类型”,它定义了这个“域”所在的处理类型,它指定了如果处理这个“域”的信息,主要是分词相关
dynamicField:动态字段,也称“动态域”,它提供“域”的模糊匹配
copyField:拷贝字段,也称“拷贝域”,它用于相同字段类型的转换,有点类似于java里的BO或VO
analyzer:分词器,定义在fieldType,用于自定义分词器,常用的几个中文分词器:IK Analyzer、庖丁解牛、mmseg4j
uniqueKey:数据的唯一标识,solr需要每条数据都有id,但这个"id"只是一个标识,可以换成任意名称,它相当于数据表的主键字段

在managed-schema中添加一下的中文分词 字段配置

  <fieldType name="mmseg4jComplex" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
</analyzer>
</fieldType>
<fieldType name="mmseg4jMaxWord" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word"/>
</analyzer>
</fieldType>
<fieldType name="mmseg4jSimple" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple"/>
</analyzer>
</fieldType>

solrconfig.xml相关
requestHandler:类似于springMVC里的requestMapping,用于拦截url映射请求,我们通过客户端或solr控制台向solr服务器发送命令时,由requestHandler做请求的映射。
searchComponent:搜索组件:定义了搜索requestHandler组件类型
下载jar包: https://github.com/chenlb/mmseg4j-solr下载并配置mmseg4j中文分词器,将下载的mmseg4j的两个jar加入tomcat-solr/webapp/solr/WEB-INF/lib/中 mmseg4j-solr-2.3.1-SNAPSHOT.jar
mmseg4j-core-1.10.1-SNAPSHOT.jar

重启Tomcat
找到core的下拉框选择 core

选择Analyse

然后在Fieldvalue写入汉字

Analyse Fieldname / FieldType:选择之前配置的mmseg4类型

点击生成按钮
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr