【Solr】之中文分词及IK库的安装使用-4

一、什么是分词

首先,Solr有自己基本的类型,string、int、date、long等等。
  对于string类型,比如在你的core/conf/manage-schema文件中,配置一个字段类型为string类型,如果查询符合“我是中国人”的数据,它就认为“我是中国人”是一个词语。
  但是如果你将该字段设置成了分词,即配置成了text_ik类型,就可能匹配“我”、“中国人”、“中国”、“中”、“人”带有这些字的该字段数据都可能被查询到。这就是分词带来的结果。具体要按照各自的业务来配置是否分词,分词对于大文本字段设置是合理的,但是对于小字段,设置分词是没必要的,甚至有相反的结果。比如你的某一个叫姓名的字段设置了分词,还不如设置string,查询时模糊匹配效果最好,(模糊匹配就是查询条件两边加上*),当然也要看自己业务需求是什么。

二、配置目地

就是让solr能对中文进行分词
在这里插入图片描述

三、分词器的选择

之前我们使用jieba分词,效果不是很好。
现在有个非常牛的分词器,IK 分词器,效果非常好,如果你一直使用solr 那么以后将一直使用IK分词器

中文分词在solr里面是没有默认开启的,需要自己配置一个中文分词器。
目前可用的分词器有smartcn,IK,Jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点。
主流还是ik,可以扩展自己的词库,非常方便,加入一些热搜词,主题词,对于搜索而言,非常方便

四、分词器的的配置

4.1 下载

下载ik (5及以上版本通用) http://files.cnblogs.com/files/zhangweizhong/ikanalyzer-solr5.zip

4.2 解压文件及说明

ext.dic自定义词 如沙雕 在汉语里面不是一个词 ,它只是一个网络用语,可以配置到这=里面让它成为一个词
stopword.dic 停止字典 如 啊 吧 唉 不作分词
IKAnalyzer.cfg.xml配置ik的配置文件 不用改
Jar:如果要使用ik分词要导入的jar包

4.3 修改managed-schema

UseSmart 和分词的粒度相关:
False: 分词的粒度大,一句话里面分的词语少
True:分词的粒度细,一句话里面分的词语多

那我们在导入时需要的关键字多吗?让索引的数据量少一点。我们的粒度大:False
我们在搜索时需要的关键字多吗?我们想尽可能的覆盖所有的范围,我们的粒度要细:True

<!--添加一个中文分词器IK-->
  <fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index">
       <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="false"/>
      </analyzer>
      <analyzer type="query">
       <tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory" useSmart="true"/>
      </analyzer>
    </fieldType>

4.4 把修改managed-sahma覆盖到solr

在这里插入图片描述

4.5 重启solr

在这里插入图片描述

4.6 查看分析出现错

产生原因是因为我们只添加发分词
但是ik想要运行必须要加入相关的配置

在这里插入图片描述
上面的配置没有加入

4.7 把IK的配置入到solr

4.7.1,放入jar包
在这里插入图片描述
4.7.2,放配置
在/usr/local/solr-7.7.2/server/solr-webapp/webapp/WEB-INF创建一个classes
在这里插入图片描述

4.8,重启solr分析

在这里插入图片描述

4.9存在问题

在这里插入图片描述
要索引时要遵循一个原因
1,索引时分词的要尽量少
2,搜索时分词尽量多
在这里插入图片描述
改完重新覆盖,重启测试
在这里插入图片描述
到此为止,全部配置成功!!!

五、使用IK分词器

5.1 添加一个属性

在这里插入图片描述
添加数据测试下
在这里插入图片描述
查看分词
在这里插入图片描述
查询测试
在这里插入图片描述
为什么pro3有 pro没有 因为ik分词时认为pro3是一个词 而pro不是词

5.2 ext.dic的说明

在ext.dic里添加一个自定义的词 沙雕
覆盖 查询
重启测试
发现现在solr认为 沙雕就是一个词

猜你喜欢

转载自blog.csdn.net/wyn_365/article/details/107319843
今日推荐