全文检索引擎Solr系列——整合中文分词组件IKAnalyzer

IK Analyzer是一款结合了词典和文法分析算法的中文分词组件,基于字符串匹配,支持用户词典扩展定义,支持细粒度和智能切分,比如:

张三说的确实在理

智能分词的结果是:

张三 |  说的 |  确实 |  在理

最细粒度分词结果:

张三 |  三 |  说的 |  的确 |  的 |  确实 |  实在 |  在理

整合IK Analyzer比mmseg4j要简单很多,下载解压缩IKAnalyzer2012FF_u1.jar放到目录:E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib,修改配置文件schema.xml,添加代码:


1

2

3

4

5

6

<field name="content" type="text_ik" indexed="true" stored="true"/>

<fieldType name="text_ik" class="solr.TextField">

      <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

      <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

查询采用IK自己的最大分词法,索引则采用它的细粒度分词法

此时就算配置完成了,重启服务:java -jar start.jar,来看看IKAnalyzer的分词效果怎么样,打开Solr管理界面,点击左侧的Analysis页面

默认分词器进行最细粒度切分。IKAnalyzer支持通过配置IKAnalyzer.cfg.xml 文件来扩充您的与有词典以及停止词典(过滤词典),只需把IKAnalyzer.cfg.xml文件放入class目录下面,指定自己的词典mydic.dic


1

2

3

4

5

6

7

8

9

10

11

<?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">/mydict.dic;

/com/mycompany/dic/mydict2.dic;</entry> 

 

   <!--用户可以在这里配置自己的扩展停止词字典-->

  <entry key="ext_stopwords">/ext_stopword.dic</entry>   

</properties>

事实上前面的FieldType配置其实存在问题,根据目前最新的IK版本IK Analyzer 2012FF_hf1.zip索引时使用最细粒度分词,查询时最大分词(智能分词)实际上是不生效的。

据作者linliangyi说,在2012FF_hf1这个版本中已经修复,经测试还是没用,详情请看此贴

解决办法:重新实现IKAnalyzerSolrFactory


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

package org.wltea.analyzer.lucene;

   

   import java.io.Reader;

   import java.util.Map;

   

   import org.apache.lucene.analysis.Tokenizer;

   import org.apache.lucene.analysis.util.TokenizerFactory;

   //lucene:4.8之前的版本

   //import org.apache.lucene.util.AttributeSource.AttributeFactory;

   //lucene:4.9

   import org.apache.lucene.util.AttributeFactory;

   

   public class IKAnalyzerSolrFactory extends TokenizerFactory{

       

       private boolean useSmart;

       

       public boolean useSmart() {

           return useSmart;

       }

       

       public void setUseSmart(boolean useSmart) {

           this.useSmart = useSmart;

       }

       

        public IKAnalyzerSolrFactory(Map<String,String> args) {

            super(args);

            assureMatchVersion();

            this.setUseSmart(args.get("useSmart").toString().equals("true"));

          }

   

   

       @Override

       public Tokenizer create(AttributeFactory factory, Reader input) {

           Tokenizer _IKTokenizer = new IKTokenizer(input , this.useSmart);

           return _IKTokenizer;

       }

   

   }

重新编译后更新jar文件,更新schema.xml文件:


1

2

3

4

5

6

7

8

<fieldType name="text_ik" class="solr.TextField" >

        <analyzer type="index">

            <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" useSmart="false"/>

        </analyzer>

        <analyzer type="query">

            <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory" useSmart="true"/>

        </analyzer>

</fieldType>

时间: 2024-10-06 04:17:18

全文检索引擎Solr系列——整合中文分词组件IKAnalyzer的相关文章

全文检索引擎Solr系列——整合MySQL、MongoDB

MySQL 拷贝mysql-connector-java-5.1.25-bin.jar到E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib目录下面 配置E:\solr-4.8.0\example\solr\collection1\conf\solrconfig.xml 1 2 3 4 5 6 <requestHandler name="/dataimport"      class="org.apache.solr.

[摘]全文检索引擎Solr系列—–全文检索基本原理

原文链接--http://www.importnew.com/12707.html 全文检索引擎Solr系列-–全文检索基本原理 2014/08/18 | 分类: 基础技术, 教程 | 2 条评论 | 标签: solr 分享到: 64 本文作者: ImportNew - 刘志军 未经许可,禁止转载! 场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到"坑爹"所在的位置,此时你会怎么查呢?毫无疑问,你的眼睛会从38页的第一个字开始从头至尾地扫描,直到找到"坑爹&quo

全文检索引擎Solr系列——Solr核心概念、配置文件

Document Document是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的一条记录,可以包含一个或多个字段(Field),每个字段包含一个name和文本值.字段在被索引的同时可以存储在索引中,搜索时就能返回该字段的值,通常文档都应该包含一个能唯一表示该文档的id字段.例如: 1 2 3 4 5 6 7 8 <doc>     <field name="id">company123</field>     &

全文检索引擎Solr系列——入门篇

Solr采用Lucene搜索库为核心,提供全文索引和搜索开源企业平台,提供REST的HTTP/XML和JSON的API,如果你是Solr新手,那么就和我一起来入门吧!本教程以solr4.8作为测试环境,jdk版本需要1.7及以上版本. 准备 本文假设你对Java有初中级以上水平,因此不再介绍Java相关环境的配置.下载解压缩solr,在example目录有start.jar文件,启动: 1 java -jar start.jar 浏览器访问:http://localhost:8983/solr/

全文检索引擎Solr 指南

全文检索引擎Solr系列:第一篇:http://t.cn/RP004gl.第二篇:http://t.cn/RPHDjk7 .第三篇:http://t.cn/RPuJt3T

word v1.3 发布,Java 分布式中文分词组件

word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义.能准确识别英文.数字,以及日期.时间等数量词,能识别人名.地名.组织机构名等未登录词.能通过自定义配置文件来改变组件行为,能自定义用户词库.自动检测词库变化.支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计.词性标注.同义标注.反义标注.拼音标注等功能.提供了10种分词算法,还提供了10种文本相似度算法,同时还无缝和Lucene

solr中文分词器IK-analyzer安装

solr本身对中文是不支持的,所以需要下载中文分词器IK-analyzer  下载地址https://code.google.com/archive/p/ik-analyzer/downloads.自己本地系统是centos6.7,所以下载了https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IK%20Analyzer%202012FF_hf1.zip 安装步骤:

在Solr中配置中文分词IKAnalyzer

李克华 云计算高级群: 292870151 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch 在Solr中配置中文分词IKAnalyzer 1.在配置文件schema.xml(位置{SOLR_HOME}/config/下),配置信息如下: <!-- IKAnalyzer 中文分词-->     <fieldType name="text_ik" class="solr.TextField">         <

python安装Jieba中文分词组件并测试

python安装Jieba中文分词组件 1.下载http://pypi.python.org/pypi/jieba/ 2.解压到解压到python目录下: 3.“win+R”进入cmd:依次输入如下代码: C:\Users\Administrator>cd D:\softwareIT\Python27\jieba-0.39 C:\Users\Administrator>d: D:\softwareIT\Python27\jieba-0.39>python setup.py install