Tag - 中文分词

lucene java 全文检索 中文分词    2017-07-19 20:50:21    806
如上一篇所说,Lucene原生功能很强大,但是很遗憾的是,Lucene官方却不支持中文分词,所以需要其他插件辅助,这里我选择使用IK Analyzer进行中文分词。

中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。

各中文分词插件比较:http://blog.csdn.net/chs_jdmdr/article/details/7359773

注意,IK Analyzer需要使用其下载列表中的 IK Analyzer 2012FF_hf1.zip,否则在和Lucene 4.10配合使用时会报错。


文件地址:http://pan.baidu.com/s/1hrXIeQ4

下载的包中没有源码,所以只使用了jar包,测试没有问题

代码摘自如下链接并略作修改:http://my.oschina.net/letiantian/blog/323887

import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import
elasticsearch 全文检索 中文分词    2017-07-19 20:36:23    794
最近用到elasticsearch做全文检索知识库系统,系统已经大致开发完成,需要中文分词,故网上搜索了下配置方法,可尝试几个都不可用,然后就看IK的git源码中有介绍,试了下,相比其他方法简单很多,也有效,故记录下,以供大家参考

参考文章:
    http://blog.csdn.net/liuzhenfeng/article/details/39404435
    https://github.com/medcl/elasticsearch-analysis-ik

Versions

IK versionES version
master2.3.1 -> master
1.9.32.3.3
1.9.02.3.0
1.8.12.2.1
1.7.02.1.1
1.5.02.0.0
1.2.61.0.0
1.2.50.90.x
1.1.30.20.x
1.0.00.16.2 -> 0.19.0

由于版本限制,并且我这里使用的是elascic 2.3.3,所以需要使用IK 1.9.3
1、下载源码:
    https://github.com/medcl/elasticsearch-analysis-ik.git
    tag:v1.9.3

2、构建 ik

修改pom.xml中repositories的配置(原有地址太慢,不确定是否可以,所以切换到自己的仓库中)
<repository>
            <id>mine</id>
            <name>public Releases</name>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mine-meteorite-bi-release</id>
            <name>public Releases</name>
            <layout>default</layout>