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

分词我理解的是,输入的一句话,按照它自己定义的规则分为常用词语。
首先,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.以上,即完成了扩展词库的配置。这样就使劲的添加你的那些想分词却没有分的词了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值