solr7.2.1集成ansj分词器

       最近刚离职,为了尽快找到好的工作,不敢不好好学习,查漏补缺。之前的工作满打满算做了11个月,主要内容是搜索业务接口的开发,主要使用的是solr引擎,工作期间由于忙于业务并没有对solr的基础进行过仔细的学习,这两天先从solr最基本的知识点开始梳理。

       关于分词器,工作中用的是ik分词器,起初也对各种分词器进行过调研和比较,最后觉得ansj还是比其他分词器要好些,所以想把ansj集成到solr中去,最终没机会去做,这两天也算是有时间做了。以下是我的操作过程和一些感受。

      在进行ansj集成之前,要先搭建好solr的开发环境,具体的可以参考如下文章:

      https://www.cnblogs.com/mengjinluohua/p/8439546.html     

      这篇博文是做ik分词集成的,solr环境搭建描述的比较详细,如果刚入门,必须先看上面这篇。

      首先,下载相应的jar包,或者相应的源码打包成jar包,主要有三个:ansj_seg-5.1.6,nlp-lang-1.7.7以及ansj_lucene5_plug-5.1.2.0。这三个jar除了第三个ansj_lucene5_plug-5.1.2.0,前两个都是目前maven中最新的版本,solr的版本是7.2.1。所有要用的都在这里了。jar包在maven上都能下载。或者可以先下载ansj源码,自己打包:https://github.com/NLPchina/ansj_seg

       然后把这三个jar包放到tomcat中的solr文件夹的指定位置(WEB-INF/lib目录下):

点击下载可以得到这样一个压缩文件:ansj_seg-master.zip

解压后可以看到,这是一个maven工程,

上图中用红色矩形圈起来的是将要放到tomcat中solr文件夹下指定位置的文件:

上图就是这两文件放置的位置和文件(注意路径)。

       最后,在solr_home中找到manage-schema,在里面加上一段配置信息:

   <!--ansj start -->
    <fieldType name="text_ansj" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
             <tokenizer class="org.ansj.lucene.util.AnsjTokenizerFactory"  isQuery="false"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="org.ansj.lucene.util.AnsjTokenizerFactory"/>
        </analyzer>
   </fieldType>
   <!--ansj end -->

注意上面标红的内容,这个是AnsjTokenizerFactory的全类名,这个类是在ansj_lucene5_plug-5.1.2.0的jar包中的,ansj_lucene5_plug-5.1.2.0可以在ansj_seg-master.zip中找到,然后用maven编译一下,就可以得到这个jar包了。

最后,启动tomcat,如果能进入到solr管理页面,在analysis中能看到text_ansj说明配置成功了。

到此我的内容就结束了,内容不多,但是为了完成搭建却花费了我一天半的时间,主要是之前不了解solr加载分词器的逻辑,今天上午又看了一遍solr的分词知识《solr权威指南》上下卷是不错的入门和工作参考。

下面这个是本文的主要参考资料:

http://www.cnblogs.com/likehua/p/4481219.html

由于这篇博客提到的版本已经找不到了,所以无法完全按照他的方法来做。尝试了很多版本都没成功。在我把基本知识点看过一遍之后,打算自己打包一个AnsjTokenizerFactory的,结果发现有现成的。。。总之非常感谢这两位博主的分享。

差点忘了,如果遇到下面这个问题,找他:https://blog.csdn.net/shiqidide/article/details/7722578

猜你喜欢

转载自blog.csdn.net/qq_15720911/article/details/84836093
今日推荐