IKAnalyzer基于lucene2.0版本API开发,实现了以词典分词为基础的 正反向全切分 以及 正反向最大匹配切分 两种算法,是Lucene Analyzer接口的实现,代码使用例子如下:
下载地址:
Lucene中文分词器 V1.2 CSDN下载
Lucene中文分词器 V1.2 Google下载
正反向全切分算法:
实现类 : org.mira.lucene.analysis.IK_CAnalyzer
分词效果测试,命令行如下:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar org.mira.lucene.analysis.IK_CAnalyzer 中华人民共和国香港特别行政区
java 代码
- 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("partnum", "Q36"));
- 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("partnum", "Q36"));
- Hits hits = searcher.search(query);
- assertEquals(1, hits.length());
- }
- }
-
该算法适合与互联网用户的搜索习惯和企业知识库检索,用户可以用句子中涵盖的中文词汇搜索,如用“人民”搜索含“人民币”的文章,这是大部分用户的搜索思维;
不适合用于知识挖掘和网络爬虫技术,全切分法容易造成知识歧义,因为在语义学上“人民”和“人民币”是完全搭不上关系的。
分词效果:
1.实现中文单词细粒度全切分
如:中华人民共和国
0 - 2 = 中华
0 - 4 = 中华人民
0 - 7 = 中华人民共和国
1 - 3 = 华人
2 - 4 = 人民
2 - 7 = 人民共和国
4 - 6 = 共和
4 - 7 = 共和国
2.实现对专有名词的识别和切分(人名,公司名)
如:陈文平是开睿动力通讯科技有限公司董事长
0 - 3 = 陈文平 <------ 人名,非汉语词汇
4 - 6 = 开睿 <------ 公司名,非汉语词汇
6 - 8 = 动力
8 - 10 = 通讯
10 - 12 = 科技
12 - 14 = 有限
12 - 16 = 有限公司
14 - 16 = 公司
16 - 18 = 董事
16 - 19 = 董事长
18 - 19 = 长
3.对数词和量词的合理切分
如:据路透社报道,印度尼西亚社会事务部一官员星期二(29日)表示,日惹市附近当地时间27日晨5时53分发生的里氏6.2级地震已经造成至少5427人死亡,20000余人受伤,近20万人无家可归。
0 - 1 = 据
1 - 4 = 路透社
4 - 6 = 报道
。。。。。。
18 - 20 = 官员
20 - 22 = 星期
20 - 23 = 星期二
22 - 23 = 二
24 - 26 = 29
24 - 27 = 29日
26 - 27 = 日
28 - 30 = 表示
31 - 33 = 日惹
33 - 34 = 市
。。。。。。
40 - 42 = 27
40 - 43 = 27日
43 - 44 = 晨
44 - 45 = 5
44 - 46 = 5时
45 - 46 = 时
46 - 48 = 53
46 - 49 = 53分
48 - 50 = 分发
。。。。。。
52 - 54 = 里氏
54 - 57 = 6.2
54 - 58 = 6.2级
57 - 58 = 级
58 - 60 = 地震
。。。。。。
66 - 70 = 5427
66 - 71 = 5427人
71 - 73 = 死亡
72 - 73 = 亡
74 - 79 = 20000
79 - 81 = 余人
81 - 83 = 受伤
84 - 85 = 近
85 - 87 = 20
85 - 89 = 20万人
87 - 89 = 万人
89 - 93 = 无家可归
最大匹配分词算法
实现类 : org.mira.lucene.analysis.MIK_CAnalyzer
效果测试命令行:
java -classpath IKAnalyzer.jar;lucene-core-2.0.0.jar 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 - 16 = 事务
18 - 20 = 官员
20 - 23 = 星期二
24 - 27 = 29日
28 - 30 = 表示
31 - 33 = 日惹
34 - 36 = 附近
36 - 40 = 当地时间
40 - 43 = 27日
44 - 46 = 5时
46 - 49 = 53分
48 - 50 = 分发
49 - 51 = 发生
50 - 52 = 生的
52 - 54 = 里氏
54 - 58 = 6.2级
58 - 60 = 地震
60 - 62 = 已经
62 - 64 = 造成
64 - 66 = 至少
66 - 71 = 5427人
71 - 73 = 死亡
75 - 80 = 20000
80 - 82 = 余人
82 - 84 = 受伤
86 - 90 = 20万人
90 - 94 = 无家可归
相关推荐
Lucene.Net不仅支持英文,还提供了多种语言的分词器,如中文、法语、德语等,确保了不同语言的文本都能得到正确的处理。 **6. 丰富的API** Lucene.Net提供了一套完整的API,开发者可以通过这些API进行索引创建、...
1. 引入DLL:在开发环境中,将PanGu.dll和PanGu.Lucene.Analyzer.dll添加到项目引用中,确保程序可以访问到这些分词组件。 2. 调用API:通过编程语言提供的DLL调用机制,如C#中的DllImport特性,或者.NET中的...
Lucene为此提供了一些专门的中文分词器,例如IK Analyzer、SmartChineseAnalyzer和jieba分词等。这些分词器能将连续的汉字流切割成一个个有意义的词语,为后续的索引和搜索做准备。 2. **词典(Dictionary)**: ...
索引过程包括准备需要索引的文档、通过分词组件去除标点和停用词、通过语言处理组件进行词元处理(例如转换为小写和词根)、最后将处理后的词(Term)传给索引组件,生成字典和文档的倒排链表。 Lucene索引的结构由...
- **分析器**:深入讲解了Lucene中的分析器组件,包括分词器、过滤器等,以及如何定制化分析流程以满足特定需求。 - **高级分析技巧**:介绍了如何通过组合不同的分析器来提高搜索质量,例如去除停用词、进行词干...
Lucene不仅用于构建搜索引擎,还可以作为其他项目的组件,如: - Compass:提供ORM集成,让Lucene能与数据库或对象持久化框架配合。 - Nutch:一个开源的Web搜索引擎项目,基于Lucene构建。 - Heritrix:一个可配置...
- **分词**:介绍Lucene如何将文本分成更小的单元,以便于索引和搜索。 - **词干提取和同义词处理**:讨论了如何通过词干提取(Stemming)和同义词处理来增强搜索结果的相关性。 - **自定义分析器**:介绍了如何开发...
分词器是 Lucene 将文本分解成可搜索的单词(术语或 tokens)的组件。它根据语言规则和停用词表来处理输入文本。 #### 1.4 分词过滤器(Token Filter) 分词过滤器在分词器之后工作,可以进行词形还原、删除停用词...
对于像英文这样的语言,词和字符是相同的,但中文等语言需要进行词法分析(如分词)来实现按词检索,这是中文全文检索中的一个挑战。 全文检索系统是基于全文检索理论的软件系统,通常包括建立索引、查询处理、用户...
- **Analyzer**:在Lucene中,Analyzer是处理文本的关键组件,负责将输入的文本分解为可搜索的词项(tokens)。Lucene 2.2提供了多种Analyzer实现,如StandardAnalyzer,它按照英语语言规则处理文本。 - **...
- Lucene内置了一些中文分词器,如SmartChineseAnalyzer。 - 可以根据不同的应用场景选择合适的分词器。 - **5.1.2 Lietu中文分词的使用** - Lietu是一款中文分词工具,支持自定义词典等功能。 - 可以灵活应用...
小旋风是一款集多任务、多线程智能网络爬虫、基于xml / xpath的路径规则的数据抽取系统、无缝集成lucene.net2.3全文索引系统,高性能中文分词组件、多数据库支持的综合垂直搜索引擎平台。 它帮您快速搭建任何一个您...
尽管Lucene本身不是一个完整的搜索引擎解决方案,但它提供了构建此类解决方案所需的基础组件。 - **全文检索系统的结构** 全文检索系统的基本结构通常包括以下几个部分: - 数据采集:获取文档或网页等数据源。 ...
Document是用来描述文档的,Field是用来描述一个文档的某个属性的,Analyzer是在一个文档被索引之前,需要对文档内容进行分词处理的,IndexWriter是Lucene用来创建索引的一个核心的类,Directory是用来存储索引的...
该项目使用了MultiFieldQueryParser,这是Lucene中的一个关键组件。MultiFieldQueryParser允许用户输入包含多个字段的复杂查询,并自动处理这些查询的解析和分析。它支持各种查询语法,包括布尔运算符(AND、OR、NOT...
6. 自动分词和智能搜索:使用Lucene的分词器,支持多种语言。 Kibana 6.2.2 是一个基于Web的可视化界面,用于Elasticsearch的数据探索和可视化。它允许用户通过交互式的仪表板来展示和理解数据: 1. 可视化构建器...
ik分词器是Elasticsearch在处理中文文本时非常重要的组件,它能够将中文文本进行有效的分词,从而提高搜索的准确性和效率。 首先,我们来详细了解一下Elasticsearch。Elasticsearch基于Lucene库构建,但提供了更高...
Java中,我们可以使用Lucene的Analyzer类,它包含不同的分词策略,如基于空格、标点符号或其他规则的分词。 3. **倒排索引(Inverted Index)**:这是搜索引擎的关键数据结构。倒排索引将每个词映射到包含该词的...
这个项目可能包含了搜索引擎的核心组件、数据处理模块、索引构建与更新机制以及查询处理和结果排序等功能。从“tot_search_engine.zip”这个文件名来看,我们可以推测这是一份压缩包,其中可能包含源代码、配置文件...