Lucene&&Solr——分析器(Analyzer)

简介: Lucene&&Solr——分析器(Analyzer)

引言

 

在Lucene中分析器其中举足轻重的作用,为了满足多种语言的支持,需要扩展一些分析器,仅仅是Lucene官方提供的标准分析器是远远不够的,比如对于中文,我们就需要引用第三方的中文分析器,下面就介绍几种分析器。

 

分析器的执行过程:



20170802235731687.png


以标准分析器为例说明这个三个TokenFilter的作用:


第一个过滤器:将首字母小写


    第二个过滤器:以空格为分割线,将句进行拆分成独立的单词


    第三个过滤器:去掉一些没有意义的单词 比如 the  a  an  等等

 

Lucene自带的中文分词器:


   StandardAnalyzer:


   单个字分词:就是按照中文一个字一个字的进行分词:比如“我爱中国”


   效果:“我”“爱”“中”“国”


   CJKAnalyzer

 

二分法分词:按两个字进行切分,如:“我是中国人” 效果:“我是”“是中”“中国”“国人”


   SmartChineseAnalyzer


   对中文的支持比较好,但扩展性差 扩展词库 禁用词库等不好处理

 

上面的这几种分析器都不能很好的满足我们的需求,所以有人写了一个良好的中文分析器IKAnalyzer


  这个中文分析器的使用也非常的简单:


  第一步:引入jar包IKAnalyzer2012FF_u1.jar


  第二步:拷贝配置文件 放在src下面  


20170803001227407.png

第三步:直接nAnalyzer analyzer = new IKAnalyzer();即可使用


分析器的使用时机

 

索引时使用Analyzer

 

输入关键字进行搜索,当需要让该关键字与文档内容所包含的词进行匹配时需要对文档域内容进行分析,需要经过Analyzer分析器处理生成语汇单元(Token).分析器分析的对象时文档中的Field域。当Fieldshuxing tokenized(是否分词)为true时会对Field值进行分析,如图:


20170803001650477.png


搜索时使用Analyzer

 

对搜索关键字进行分析和索引分析一样,使用Analyzer对搜索关键字进行分析、分词处理,使用分析后每个词语进行搜索。比如搜索关键字:spring web,经过分析器进行分词,得出 spring  web 拿去索引词典表查找,找到索引连接到Document,解析Document内容

对于匹配整体Field域的查询可以在搜索时不分析,比如根据订单号,身份证号查询等

 

再次强调:搜索使用的分析器和索引使用的分析器要一致。

 

solr安装中文分析器(IKAnalyzer)


20170803002432765.png


小结

 

本文主要介绍了一些分析器的内容,尤其是对于中文分析器的使用,分析器的执行流程和执行时机需要我们了解,希望能给读者带来帮助。

目录
相关文章
|
存储 XML SQL
solr之Ik中文分析器的安装
solr之Ik中文分析器的安装
128 0
|
自然语言处理 算法 架构师
Lucene优化(分词器的选择) | 学习笔记
快速学习Lucene优化(分词器的选择)。
Lucene优化(分词器的选择) | 学习笔记
|
自然语言处理
Elasticsearch自定义分析器analyzer分词实践
Elasticsearch自定义分析器analyzer分词实践
188 0
Elasticsearch自定义分析器analyzer分词实践
|
自然语言处理 算法 Java
solr配置 中文分析器 IK Analyzer下载
solr配置 中文分析器 IK Analyzer下载
199 0
|
存储 算法 Java
Lucene/Solr Optimize相关总结
假期重新把之前在新浪博客里面的文字梳理了下,搬到这里。
205 0
|
自然语言处理 Java
|
应用服务中间件 自然语言处理
|
自然语言处理 应用服务中间件