最新版IKAnalyzer 3.0已发布,详细请浏览:
http://linliangyi2007.iteye.com/blog/429960
客户词典扩展API,补充说明:
类 : org.mira.lucene.analysis.dict.Dictionary
方法 :public static void loadExtendWords(List wordList)
(PS:实际上该API一直存在于v2.0.2,都怪俺没做好API文档,自己汗一下 )
使用说明:
IKAnalyzer基于lucene2.0版本API开发,实现了以词典分词为基础的正反向全切分算法,是Lucene Analyzer接口的实现,代码使用例子如下:
分词效果测试,命令行如下:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer 中华人民共和国香港特别行政区
性能与特性:
1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP)
2. 对数量词、地名、路名的优化处理
3. 对未知词汇采用自识别结合二元切分算法,确保搜索召回率
V 2.0.2 修订 Bata版对二元切分的缺陷
正向全切分分词器:org.mira.lucene.analysis.IK_CAnalyzer(适合建索引时使用)
正向最大全切分分词器:org.mira.lucene.analysis.MIK_CAnalyzer(适合用户输入检索时使用)
下面演示“正向最大全切分分词器”效果:
例子:中华人民共和国香港特别行政区
0 - 7 = 中华人民共和国
7 - 14 = 香港特别行政区
例子:据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发
生的里氏6.2级地震已经造成至少5427人死亡?,20000余人受伤,近20万人无家可归。
1 - 4 = 路透社
4 - 6 = 报道
7 - 12 = 印度尼西亚
12 - 14 = 社会
14 - 17 = 事务部
17 - 18 = 一
18 - 20 = 官员
20 - 23 = 星期二
24 - 27 = 29日
28 - 30 = 表示
31 - 34 = 日惹市
34 - 36 = 附近
36 - 40 = 当地时间
40 - 43 = 27日
43 - 44 = 晨
44 - 46 = 5时
46 - 49 = 53分
48 - 50 = 分发
49 - 51 = 发生
52 - 54 = 里氏
54 - 58 = 6.2级
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 71 = 5427人
71 - 73 = 死亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 89 = 20万人
89 - 93 = 无家可归
一年后才发现没有上传jar包,汗到火星鸟!!
客户词典扩展API,补充说明:
类 : org.mira.lucene.analysis.dict.Dictionary
方法 :public static void loadExtendWords(List wordList)
(PS:实际上该API一直存在于v2.0.2,都怪俺没做好API文档,自己汗一下 )
使用说明:
IKAnalyzer基于lucene2.0版本API开发,实现了以词典分词为基础的正反向全切分算法,是Lucene Analyzer接口的实现,代码使用例子如下:
import org.mira.lucene.analysis.IK_CAnalyzer <------- 引用类 import ..... public class IKAnalyzerTest extends TestCase { RAMDirectory directory; private IndexSearcher searcher; public void setUp() throws Exception { directory = new RAMDirectory(); IndexWriter writer = new IndexWriter(directory, new IK_CAnalyzer(), <------- 实例化类 true); Document doc = new Document(); doc.add(Field.Keyword("title", "中文分词测试")); doc.add(Field.Text("description", "Illidium Space Modulator")); writer.addDocument(doc); writer.close(); searcher = new IndexSearcher(directory); } public void testTermQuery() throws Exception { Query query = new TermQuery(new Term("title", "中文分词")); Hits hits = searcher.search(query); assertEquals(1, hits.length()); } }
分词效果测试,命令行如下:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer 中华人民共和国香港特别行政区
性能与特性:
1. 正向全切分算法,42万汉字字符/每秒的处理能力(IBM ThinkPad 酷睿I 1.6G 1G内存 WinXP)
2. 对数量词、地名、路名的优化处理
3. 对未知词汇采用自识别结合二元切分算法,确保搜索召回率
V 2.0.2 修订 Bata版对二元切分的缺陷
正向全切分分词器:org.mira.lucene.analysis.IK_CAnalyzer(适合建索引时使用)
正向最大全切分分词器:org.mira.lucene.analysis.MIK_CAnalyzer(适合用户输入检索时使用)
下面演示“正向最大全切分分词器”效果:
例子:中华人民共和国香港特别行政区
0 - 7 = 中华人民共和国
7 - 14 = 香港特别行政区
例子:据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发
生的里氏6.2级地震已经造成至少5427人死亡?,20000余人受伤,近20万人无家可归。
1 - 4 = 路透社
4 - 6 = 报道
7 - 12 = 印度尼西亚
12 - 14 = 社会
14 - 17 = 事务部
17 - 18 = 一
18 - 20 = 官员
20 - 23 = 星期二
24 - 27 = 29日
28 - 30 = 表示
31 - 34 = 日惹市
34 - 36 = 附近
36 - 40 = 当地时间
40 - 43 = 27日
43 - 44 = 晨
44 - 46 = 5时
46 - 49 = 53分
48 - 50 = 分发
49 - 51 = 发生
52 - 54 = 里氏
54 - 58 = 6.2级
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 71 = 5427人
71 - 73 = 死亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 89 = 20万人
89 - 93 = 无家可归
一年后才发现没有上传jar包,汗到火星鸟!!