你的位置:首页 > Java教程

[Java教程]SOLR配置IK分词器


  又到了一天一博的时间,今天来写一下SOLR中配置IK分词器的事,废话不多说,下面进入正文。

  大家都知道,老外的东西对中文的支持多多少少有点纠结,solr也不例外,但是就算是最黑暗的时代也有那么一丝生机,更别说SOLR仅仅是一个工具,所以solr对于中文的支持还是有办法解决的,那就是配置我们自己的分词器,我要配置的分词器就是IK分词器,网上其他的分词器也挺多的,但是我也没用过,练习的时候用的也是IK分词器,所以我就写一下怎么配置IK分词器的吧。

  首先,需要下载一下IK分词器的压缩包,我下载的是这个版本,其他版本好不好使大家可以自己去尝试一下,下载完成之后解压缩后的目录如下:

  

  第四步,修改需要使用分词器的字段,将其type改为text_ik即可,如下所示:

  注意我圈出来的两个地方,等下做一下对比,看看加不加分词器的效果。

  第五步,启动tomcat,进入http://localhost:8080/solr/#/collection1页面,点击collection1下面的Analysis按钮,出现如下所示页面:

然后我们再看一下没有使用分词器的userAddress字段,测试效果如下:

上面的例子大家可以看出来配置分词器跟不配置分词器的差距了吧?

  第六步,配置自定义关键词。

  分词器毕竟是机器,不可能那么灵敏,或者说不可能那么高智商,有时候分的词就不是你想要的,比如我遇到的“决水罪”这个罪名,怎么分都分不出我想要的,那这时候怎么办呢?好办,首先打开你的IKAnalyzer.cfg.

  然后在相同目录下添加ext.dic文件,然后把你想要的词放在里面,但是这里要注意一下格式问题,ext.dic文件需要以UTF-8无BOM格式编码,大家可以使用Notepad++来保存即可。创建的文件如下:

 

创建完成后放到上面所说的目录下,然后重启tomcat,还是使用上面的两个字段来进行测试,首先是配置了分词器的userName字段,测试结果:

  然后是没有配置分词器的userAddress字段,测试结果如下所示:

  可以很明显的看出配置分词器和没有配置分词器的差别。然后有人会说你是在这里测试分词器,跟solr有什么关系?是这样的,你对要分词的字段配置完分词器之后,在你查询的时候,solr就会自动的把你的字段内容进行分词,比如你要查询userName时决水罪的,那么solr就会先把决水罪三个字进行分词,比如分出来了三个词,当然是打个比方啊,那么solr就是使用分出来的三个词分别对你创建的索引中的username字段进行模糊查询,最后把所有符合条件的结果都给返回回来。

  OK,今天的分词器就说道这里吧,明天开始说solr对多个表创建索引,包括不关联的表以及相互关联的表,好,今天就这样了。