Solr 基础实践--配置IKAnalyzer的中文分词篇

Solr 基础实践--配置IKAnalyzer的中文分词篇_第1张图片

1. IKAnalyzer是什么

IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目 Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。

2. 为什么要分词?

因为搜索这种东西,不是像字符串查询那样,完全按照关键字去对比。比如有一往篇文章,我们要通过一个关键字来搜索这篇文章的内容。首先,我们要对这个文章建立索引,怎么建立的,就是通过分词来建立的,分好词组以后。再通过关键字与每个分词的索引进行比对,有就是有,没得就找不到。如果分词没做好,比如: 在《地藏经》第十二品《见闻利益品》,说读经的时候、没有记忆力

我们用IK分词,结果如下:

在|地藏经|藏经|第|十二|品|见闻|见|闻|利益|品|说|读经|的|时候|没有|有|记忆力|记忆|力|
如果我们输入“地藏”两个字,那么结果就搜索不出来,所以分词对搜索来说,相当重要。

3. 解释一下Lucene还有 IK 要解决一个什么问题,以及大致的原理

我们传统的数据库是把文本整段存在库里面,当是搜索一个词的时候,它使用这个词去大文本里面去匹配,这个匹配过程速度很慢。Lucene是一个全文搜索引擎,它的思路是倒过来的。它做的事情分成两个阶段。第一阶段是把文章,也就是长文本在存储的时候建索引。建索引的过程要把文本按照词来切分。切分的时候是按词源切分,再把每个词都作为索引,指出词在文章中的位置以及跟哪些文章相关联。当有大量文章进来的时候,你可以想象一下有一个字典,这个字典是按照词来排序,每个词都会记录有哪些文章引用到我了,以及文章的哪些部分。这个索引的过程就是Lucene做的一个存储过程。那在这个存储过程中,对于英文而言基本上按照空格来切分就可以了,但是中文是连续性的,所以计算机就需要一个能够识别中文词汇的程序和算法,这就是中文分词器。分词器在文章进入到数据库的时候,对它进行分词。比如用户输入了“咖啡牛排”,那分词器就要把这个切分成“咖啡”和“牛排”。

4. 配置IKAnalyzer分词器

ext.dic为扩展字典,stopword.dic为停止词字典,IKAnalyzer.cfg.xml为配置文件,solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar为分词jar包。

  • 解压IKAnalyzer包
Solr 基础实践--配置IKAnalyzer的中文分词篇_第2张图片
  • 将文件夹下的IKAnalyzer.cfg.xml , ext.dic和stopword.dic 三个文件 复制到/usr/local/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/目录下
  • 复制solr-analyzer-ik-5.1.0.jar ik-analyzer-solr5-5.x.jar到/usr/local/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/目录下
  • 修改/usr/local/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml

<

<

 
        IK Analyzer 扩展配置
 
        
 
        ext.dic;



        
 
        stopword.dic;




  • 在/usr/local/apache-tomcat-8.5.12/solrhome/mukl/conf/managed-schema 文件前增加如下配置



 
        
 
            
 
        
 
        
 
            
 
        


Solr 基础实践--配置IKAnalyzer的中文分词篇_第3张图片
  • 重启Tomcat
Solr 基础实践--配置IKAnalyzer的中文分词篇_第4张图片

你可能感兴趣的:(Solr 基础实践--配置IKAnalyzer的中文分词篇)