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

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

一、什么是分词


首先,Solr有自己基本的类型,string、int、date、long等等。

 对于string类型,比如在你的core/conf/manage-schema文件中,配置一个字段类型为string类型,如果查询符合“我是中国人”的数据,它就认为“我是中国人”是一个词语。

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


二、配置目地


就是让solr能对中文进行分词

20200713163518424.png


三、分词器的选择


之前我们使用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

20200713164048463.png


4.5 重启solr

20200714151410232.png

4.6 查看分析出现错


产生原因是因为我们只添加发分词

但是ik想要运行必须要加入相关的配置


20200714151812683.png

上面的配置没有加入


4.7 把IK的配置入到solr


4.7.1,放入jar包


20200714152419850.png



4.7.2,放配置

在/usr/local/solr-7.7.2/server/solr-webapp/webapp/WEB-INF创建一个classes


20200714152437448.png

4.8,重启solr分析

20200714151936343.png


4.9存在问题


20200714152004527.png

要索引时要遵循一个原因

1,索引时分词的要尽量少

2,搜索时分词尽量多


20200714152027919.png

改完重新覆盖,重启测试


20200714152102979.png


到此为止,全部配置成功!!!


五、使用IK分词器


5.1 添加一个属性


20200714155304755.png

添加数据测试下

20200714155331549.png

查看分词

20200714155351605.png



查询测试


20200714155416575.png


为什么pro3有 pro没有 因为ik分词时认为pro3是一个词 而pro不是词


5.2 ext.dic的说明


在ext.dic里添加一个自定义的词 沙雕

覆盖 查询

重启测试

发现现在solr认为 沙雕就是一个词

目录
相关文章
|
自然语言处理 Docker 容器
elasticsearch-analysis-ik分词器下载与安装
elasticsearch-analysis-ik分词器下载与安装
1638 0
elasticsearch-analysis-ik分词器下载与安装
|
11月前
|
自然语言处理 搜索推荐 索引
白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用
白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用
77 0
|
11月前
|
自然语言处理 安全 关系型数据库
白话Elasticsearch30-IK中文分词之热更新IK词库
白话Elasticsearch30-IK中文分词之热更新IK词库
128 0
|
11月前
|
存储 XML SQL
solr之Ik中文分析器的安装
solr之Ik中文分析器的安装
99 0
|
开发者
Elasticsearch7.15.2 安装ik7.15.2中文分词器报错解决方案
问题描述 下载 elasticsearch-7.15.2 及分词器 elasticsearch-analysis-ik-7.15.2 运行bin/elasticsearch 报以下错误 Exception in thread "main" java.nio.file.NotDirectoryException: /Users/lishuo/ElasticStack/elasticsearch-7.15.2/plugins/.DS_Store at java.base/sun.nio.fs.UnixFileSystemProvider.newDirectoryStream(UnixFileSy
|
自然语言处理 算法 Java
solr配置 中文分析器 IK Analyzer下载
solr配置 中文分析器 IK Analyzer下载
165 0
|
存储 自然语言处理 Ubuntu
Elasticsearch 及 IK 中文分词插件安装
Elasticsearch 及 IK 中文分词插件安装 一、安装Java并配置 JAVA_HOME 环境变量 由于Elasticsearch是使用Java构建的,所以首先需要安装 Java 8 或更高版本 才能运行。 所有Elasticsearch节点和客户机上都应该使用相同的JVM版本。 1. 安装Java 根据不同的系统,从 https://www.oracle.com/techne... 下载相应Java版本进行安装。 CentOS安装Java示例
|
自然语言处理 API 开发工具
elasticsearch7.13.4 ik中文分词器安装
elasticsearch7.13.4 ik中文分词器安装
285 0
|
自然语言处理 算法 Oracle
elasticsearch插件六—— 分词 IK analyzer插件安装详解
一、 IK Analyzer 介绍 IK Analyzer是一个开源的,基于Java语言开发的轻量级的中文分词工具包,最初的时候,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件,从3.0版本之后,IK逐渐成为面向java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。
382 0
elasticsearch插件六—— 分词 IK analyzer插件安装详解