- 浏览: 269796 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (195)
- EXT学习 (2)
- hibernate (3)
- drools (1)
- TDD测试驱动开发 (3)
- js (7)
- php (3)
- appfuse (2)
- css (5)
- 站长文库 (15)
- flex (6)
- lucene (43)
- 业务建模 (1)
- Pentaho Report Designer (1)
- 代码质量 (10)
- webservice (2)
- 美工 (3)
- dot net (7)
- 人生 (5)
- 方法论 (3)
- html (4)
- 需求管理 (2)
- 资源分享 (2)
- JAVA (6)
- IDE--intelij文章收集 (5)
- 爬虫学习 (1)
- air (2)
- json转换 (1)
- Linux (2)
- C C++ (1)
- mysql word export 导出 (1)
- avast windows server 2003 (3)
- Linux yum (1)
- flash as3 actionscript 错误码 参考 (1)
- actionscript (1)
- 快速开发 (2)
- ios (0)
- erLang (1)
- 手机开发 (1)
- mysql (1)
- 苹果 MacOs (1)
最新评论
-
cuidongdong1234:
有没有源码分析呀?
初步了解jackson -
ieblaze:
您好!我测试了下 ,启动不成警告: Could not get ...
Embed Tomcat 开发,调试项目 -
Feegle7:
楼主,你这个ppt太花了,估计,大家根本没心思看内容了
drools的学习总结 -
filix:
zhoche2008 写道本来写得挺好的。非要搞一些PPT动画 ...
drools的学习总结 -
zhoche2008:
这PPT真耗资源,服了
drools的学习总结
前提:文章基于lucene2.2。
目前最新版本的lucene自身提供的StandardAnalyzer已经具备中文分词的功能,但是不一定能够满足大多数应用的需要。
另外网友谈的比较多的中文分词器还有:
CJKAnalyzer
ChineseAnalyzer
IK_CAnalyzer(MIK_CAnalyzer)
还有一些热心网友自己写的比较不错的分词器在此就不说了,有兴趣的可以自己研究研究。
以上三个中文分词器并不是lucene2.2.jar里提供的。
CJKAnalyzer和ChineseAnalyzer分别是lucene-2.2.0目录下contrib目录下analyzers的lucene-analyzers-2.2.0.jar提供的。分别位于cn和cjk目录。
IK_CAnalyzer(MIK_CAnalyzer)是基于分词词典,目前最新的1.4版本是基于lucene2.0开发的。以上分词器各有优劣,比较如下:
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.mira.lucene.analysis.IK_CAnalyzer;
import org.mira.lucene.analysis.MIK_CAnalyzer;
public class All_Test {
private static String string = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。 ";
public static void Standard_Analyzer(String str) throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render );
System.out.println( "=====StandardAnalyzer==== ");
System.out.println( "分析方法:默认没有词只有字(一元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void CJK_Analyzer(String str) throws Exception{
Analyzer analyzer = new CJKAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====CJKAnalyzer==== ");
System.out.println( "分析方法:交叉双字分割(二元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void Chiniese_Analyzer(String str) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();
Reader render = new StringReader(str);
TokenFilter tokenFilter = (TokenFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====chinese analyzer==== ");
System.out.println( "分析方法:基本等同StandardAnalyzer(一元分词) ");
Token token;
while ((token = tokenFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void ik_CAnalyzer(String str) throws Exception{
// Analyzer analyzer = new MIK_CAnalyzer();
Analyzer analyzer = new IK_CAnalyzer();
Reader reader = new StringReader(str);
TokenStream tokenStream = (TokenStream)analyzer.tokenStream( " ", reader);
System.out.println( "=====IK_CAnalyzer==== ");
System.out.println( "分析方法:字典分词,正反双向搜索 ");
Token token;
while ((token = tokenStream.next()) != null) {
System.out.println(tokenStream.termText());
}
}
public static void main(String[] args) throws Exception{
String str = string;
System.out.println( "我们测试的字符串是: "+str);
Standard_Analyzer(str);
CJK_Analyzer(str);
Chiniese_Analyzer(str);
ik_CAnalyzer(str);
}
}
分词结果如下:
我们测试的字符串是:中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。
=====StandardAnalyzer====
分析方法:默认没有词只有字(一元分词)
中
华
人
民
共
和
国
在
1949
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====CJKAnalyzer====
分析方法:交叉双字分割(二元分词)
中华
华人
人民
民共
共和
和国
国在
1949
年建
建立
从此
此开
开始
始了
了新
新中
中国
国的
的伟
伟大
大篇
篇章
=====chinese analyzer====
分析方法:基本等同StandardAnalyzer(一元分词)
中
华
人
民
共
和
国
在
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====IK_CAnalyzer====
分析方法:字典分词,正反双向搜索
中华人民共和国
中华人民
中华
华人
人民共和国
人民
人
共和国
共和
1949年
建立
从此
开始
新中国
中国
伟大
大篇
篇章
如果 ik_CAnalyzer(String str) 里采用
Analyzer analyzer = new MIK_CAnalyzer();
那么该方法的分词结果是:
中华人民共和国
1949年
建立
从此
开始
新中国
伟大
大篇
篇章
可以看到各种分词结果各不相同,根据应用的需要可以选择合适的分词器。
关于IKAnalyzer的介绍可以参考:
http://blog.csdn.net/dbigbear/archive/2007/01/24/1492380.aspx
http://topic.csdn.net/u/20070714/13/84db902a-9128-4b1b-8dd8-a631f15db931.html
发表评论
-
Lucene-2.2.0 源代码阅读学习(40)
2009-06-04 14:37 1199关于Lucene检索结果的排序问题。 已经知道,Luce ... -
Lucene-2.2.0 源代码阅读学习(39)
2009-06-04 14:35 888关于Lucene得分的计算。 在IndexSearche ... -
Lucene-2.2.0 源代码阅读学习(38)
2009-06-04 14:34 1481关于QueryParser。 QueryPars ... -
Lucene-2.2.0 源代码阅读学习(37)
2009-06-04 14:32 961关于MultiTermQuery查询。 ... -
Lucene-2.2.0 源代码阅读学习(36)
2009-06-04 14:23 1040关于MultiTermQuery查询。 ... -
Lucene-2.2.0 源代码阅读学习(35)
2009-06-04 14:22 750关于MultiPhraseQuery(多短语查询)。 Mul ... -
Lucene-2.2.0 源代码阅读学习(34)
2009-06-04 14:21 1109关于PhraseQuery。 PhraseQuery查询是将 ... -
Lucene-2.2.0 源代码阅读学习(33)
2009-06-04 14:20 800关于范围查询RangeQuery ... -
Lucene-2.2.0 源代码阅读学习(32)
2009-06-04 14:18 1112关于SpanQuery(跨度搜索),它是Query的子类,但是 ... -
Lucene-2.2.0 源代码阅读学习(31)
2009-06-04 14:15 1063关于前缀查询PrefixQuery(前缀查询)。 准备工作就 ... -
Lucene-2.2.0 源代码阅读学习(30)
2009-06-04 14:14 853关于Query的学习。 主要使用TermQuery和Bool ... -
Lucene-2.2.0 源代码阅读学习(29)
2009-06-04 14:12 1039关于IndexSearcher检索器。 ... -
Lucene-2.2.0 源代码阅读学习(28)
2009-06-04 14:09 928关于检索的核心IndexSearcher类。 IndexSe ... -
Lucene-2.2.0 源代码阅读学习(27)
2009-06-04 14:07 863关于Lucene的检索(IndexSearcher)的内容 ... -
Lucene-2.2.0 源代码阅读学习(26)
2009-06-04 14:06 1120如果在初始化一个IndexWr ... -
Lucene-2.2.0 源代码阅读学习(25)
2009-06-04 14:03 858复合索引文件格式(.cfs)是如何产生的?从这个问题出发,研究 ... -
Lucene-2.2.0 源代码阅读学习(24)
2009-06-04 13:58 940阅读了这么多代码, ... -
Lucene-2.2.0 源代码阅读学习(23)
2009-06-04 13:55 815通过对DocumentWriter类的writePosting ... -
Lucene-2.2.0 源代码阅读学习(22)
2009-06-04 13:54 864关于FieldInfos类和FieldInfo类。 Fi ... -
Lucene-2.2.0 源代码阅读学习(21)
2009-06-04 13:53 833回到IndexWriter索引器类 ...
相关推荐
### Lucene与中文分词技术的研究及应用 #### Lucene简介与原理 Lucene是一款高性能、全功能的文本搜索引擎库,由Java语言编写而成。它为开发者提供了构建全文搜索引擎的能力,而无需关注底层搜索机制的具体实现...
这些分词器专门针对中文的特点进行了优化,能够准确地将连续的汉字序列切分成具有实际意义的词语,这一过程称为中文分词。 ikanalyzer和IK Analyzer是基于字典的分词器,它们维护了大规模的中文词汇库,通过查找...
歧义消除通常可以通过以下几种方式实现: - **上下文相关性分析**:根据前后文的语境来确定最佳的分词方案。 - **词频统计**:优先选择在语料库中出现频率较高的词语组合。 - **语法规则**:利用语言学知识,比如...
盘古分词是专门为中文设计的一种高效、精准的分词工具。它能够对中文文本进行细分,将其拆分成有意义的词汇单元,以便于后续的索引和搜索操作。盘古分词以其高性能和良好的分词效果,在许多.NET 应用中被广泛应用,...
而盘古分词是针对中文分词的一种解决方案,它为Lucene提供了更加精准和高效的中文分词能力。在“Lucene3.0.3+盘古分词(证实可用,可指定使用自己的词库文件).rar”这个压缩包中,包含了实现这一功能所需的DLL文件...
“Ik”的jar包则可能是指“Smart Chinese Analyzer for Lucene”,即ik分词器,这是一个专门针对中文的分词库,适用于Lucene和Solr。Ik分词器能够对中文文本进行有效的分词处理,提高了中文搜索的准确性。`ik-...
疱丁解牛分词器是一款专门针对中文分词的工具,其特点在于使用了灵活的词典和多种切分方法。本知识点将详细解析疱丁分词器中的关键概念、词典的组成、词典加载策略、编译过程、编码方式以及刀的种类和切分方法等。 ...
在Lucene5版本中,它不仅提供了基础的文本搜索功能,还支持了拼音搜索,这极大地提高了中文搜索的便利性和准确性。本文将围绕“Lucene5学习之拼音搜索”这一主题,详细介绍其拼音搜索的实现原理和实际应用。 首先,...
5. `IKAnalyzer.cfg.xml`:配置文件,用于设置IKAnalyzer的行为,如是否开启动态加载词典、使用哪种分词模式(精细模式或全模式)、启用哪个词典等。 在配置Solr以使用IKAnalyzer时,你需要在Solr的`solrconfig.xml...
在中文环境中,通常使用IK分词器或其他专门针对中文的分词工具,如jieba分词。 2. **索引**:分词后的结果被构建为倒排索引,这是一种优化的结构,使得快速查找含有特定词汇的文档变得可能。 3. **查询解析**:用户...
**Lucene学习总结** 在深入理解Lucene之前,我们首先需要了解什么是全文检索。全文检索是一种从大量文本数据中快速查找所需信息的技术。它通过建立索引来实现高效的搜索,而Lucene正是Java环境下最著名的全文搜索...
Lucene作为Apache软件基金会的一个开源项目,是Java领域内最著名的全文搜索引擎库,而IKAnalyzer则是针对中文分词的优秀解决方案。本篇文章将详细介绍如何利用Lucene4.0和IKAnalyzer2012来构建一个高性能的中文全文...
IK中文分词器是针对中文文本处理的一种常用工具,尤其在搜索引擎和自然语言处理领域有着广泛的应用。在Solr 5版本中,IK分词器作为一个插件被集成,为Solr提供了强大的中文分词能力,帮助用户进行精确、灵活的全文...
搜索是Lucene的核心功能,通过Query对象来构造查询条件,主要有以下几种查询类型: - 单词查询(TermQuery):匹配特定单词。 - 布尔查询(BooleanQuery):组合多个查询条件,如AND、OR、NOT。 - 范围查询...
总结来说,这个压缩包中的源代码提供了Lucene索引创建和搜索的实践示例,对于学习Java和Lucene的开发者来说,这是一个宝贵的资源。通过深入理解并实践这些代码,你可以掌握如何在实际项目中应用Lucene来构建高效的...
### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1....以上是对Lucene3源码分析的一些关键知识点总结,通过对这些概念和技术的理解,可以更好地掌握Lucene的工作原理及其应用。
几种分词工具都试过,对于中文来说的的话个人觉得IKAnalyzer 最好用,不同版本的IKAnalyzer jar包,包括IKAnalyzer6.5.0、IKAnalyzer5.0、IKAnalyzer2012,IKAnalyzer6.5.0可完美兼容Lucene6+,IKAnalyzer5.0兼容...