您的位置:首页 > 其它

搜索引擎solr7.2.1+Jetty 分词及自定义扩展词库的配置

2018-03-05 09:42 253 查看

分词我理解的是,输入的一句话,按照它自己定义的规则分为常用词语。

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

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

Solr分词的配置如下:

1.首先下载一个分词的jar包ik分词5.5jar包下载地址

2.将该分词jar包放到你的solr运行tomcat中的webapps/solr/WEB-INF/lib文件夹中,例如我的是D:\Tomcat9Solr\webapps\solr\WEB-INF\lib。

3.然后,在你的solrHome下的某个core/conf文件夹中,找到manage-schema文件,在改文件中的最下边添加配置如下内容:

<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
<analyzer type="query" useSmart="true"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>

4.然后还是在这个manage-schema文件中,找到你想配置分词的字段,将其type改为text_ik类型:

 这里以dkdz为例,设置之前,在solr客户端查看是如下结果:


如果配置好分词,它会智能分词,对于一些特殊的词句,可能不会分成你想要的词

  比如这么一句话,“清池街办新庄村”,配置好分词后,会有如下的结果:


 分词后的结果,并没有你想要的“清池街办新庄村”的这个词,这种情况就需要配置自定义的扩展词库了。

扩展词库的配置很简单,具体步骤如下:

1.前提是你要先配置好分词

2  solr-7.2.1\server\solr-webapp\webapp\WEB-INF目录下新增一个文件夹:classes

 3 新增一个文件:IKAnalyzer.cfg.xml ,与classes文件同级,另在classes文件下新建ext.dic和stoword.dic,不会新建dic的可以用文本另存为的方式存储为dic文件。IKAnalyzer.cfg.xml 文件即配置ext.dic和stopword.dic两个字典库的位置。具体配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典,多个以分号隔开 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典,多个以分号隔开-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>


  ext.dic即扩展词库的存储文件,比如我打算建立一个词“清池街办新庄村”这样一个词,那打开该文件,在里边新添一个即可:清池街办新庄村,  注意: 文件格式必需是:无BOM的UTF-8格式添加的每个词都自己占一行就可以的。 
  stopword.dic停止词字典的配置,你可以将空格什么的填进去,这里不用这个字典配置。

3.配置完之后,需要重启solr服务 solr stop -all ,solr start ,然后再回到开始的位置查看一下“清池街办新庄村”的分词结果:



4.以上,即完成了扩展词库的配置。这样就使劲的添加你的那些想分词却没有分的词了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr solr 分词