zoukankan
html css js c++ java
lucene的中文分词器
ucene的中文分词器到现在还没有好的解决办法。下边介绍了两个lucene自己提供的分词器和一个javaeye上的网友实现的分词器。关于各个分词器的不同见代码中的print信息。直接运行得到console的输出结果更容易对比不同。
package
analyzer;
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;
import
com.sohospace.lucene.analysis.xanalyzer.XAnalyzer;
import
com.sohospace.lucene.analysis.xanalyzer.XFactory;
import
com.sohospace.lucene.analysis.xanalyzer.XTokenizer;
//
中文分词使用了Paoding的分词技术,特表示感谢
public
class
TestCJKAnalyzer
{
private
static
String testString1
=
"
中华人民共和国在1949年建立,从此开始了新中国的伟大篇章
"
;
private
static
String testString2
=
"
比尔盖茨从事餐饮业和服务业方面的工作
"
;
public
static
void
testStandard(String testString)
throws
Exception
{
Analyzer analyzer
=
new
StandardAnalyzer();
Reader r
=
new
StringReader(testString);
StopFilter sf
=
(StopFilter) analyzer.tokenStream(
""
, r);
System.err.println(
"
=====standard analyzer====
"
);
System.err.println(
"
分析方法:默认没有词只有字
"
);
Token t;
while
((t
=
sf.next())
!=
null
)
{
System.out.println(t.termText());
}
}
public
static
void
testCJK(String testString)
throws
Exception
{
Analyzer analyzer
=
new
CJKAnalyzer();
Reader r
=
new
StringReader(testString);
StopFilter sf
=
(StopFilter) analyzer.tokenStream(
""
, r);
System.err.println(
"
=====cjk analyzer====
"
);
System.err.println(
"
分析方法:交叉双字分割
"
);
Token t;
while
((t
=
sf.next())
!=
null
)
{
System.out.println(t.termText());
}
}
public
static
void
testChiniese(String testString)
throws
Exception
{
Analyzer analyzer
=
new
ChineseAnalyzer();
Reader r
=
new
StringReader(testString);
TokenFilter tf
=
(TokenFilter) analyzer.tokenStream(
""
, r);
System.err.println(
"
=====chinese analyzer====
"
);
System.err.println(
"
分析方法:基本等同StandardAnalyzer
"
);
Token t;
while
((t
=
tf.next())
!=
null
)
{
System.out.println(t.termText());
}
}
public
static
void
testPaoding(String testString)
throws
Exception
{
XAnalyzer analyzer
=
XFactory.getQueryAnalyzer();
Reader r
=
new
StringReader(testString);
XTokenizer ts
=
(XTokenizer) analyzer.tokenStream(
""
, r);
System.err.println(
"
=====paoding analyzer====
"
);
System.err.println(
"
分析方法:字典分词,去掉停止词。在字典不能匹配的情况下使用CJKAnalyzer的分割发。
"
);
Token t;
while
((t
=
ts.next())
!=
null
)
{
System.out.println(t.termText());
}
}
public
static
void
testJe(String testString)
throws
Exception
{
//
Analyzer analyzer = new MIK_CAnalyzer();
Analyzer analyzer
=
new
IK_CAnalyzer();
Reader r
=
new
StringReader(testString);
TokenStream ts
=
(TokenStream)analyzer.tokenStream(
""
, r);
System.err.println(
"
=====je analyzer====
"
);
System.err.println(
"
分析方法:字典分词,正反双向搜索,具体不明
"
);
Token t;
while
((t
=
ts.next())
!=
null
)
{
System.out.println(t.termText());
}
}
public
static
void
main(String[] args)
throws
Exception
{
//
String testString = testString1;
String testString
=
testString1;
System.out.println(testString);
testStandard(testString);
testCJK(testString);
testPaoding(testString);
//
testChiniese(testString);
//
testJe(testString);
}
}
查看全文
相关阅读:
对象关系【继承】【依赖】【关联】【聚合】【组合】
对象关系【继承】【依赖】【关联】【聚合】【组合】
Spring使用p名称空间配置属性
Spring使用p名称空间配置属性
spring实例化bean的方式
MS04011远程缓冲区溢出代码
注入下载文件的代码到IE进程然后执行下载的文件
缓冲区溢出漏洞发掘之整数范围限制浅析
基于ICMP的木马的编写
凯撒密文的破解编程实现
原文地址:https://www.cnblogs.com/pony/p/1486285.html
最新文章
java+selenium——鼠标在某个元素上右击
java+selenium——简单截图+保存在某个路径
java+selenium——鼠标悬停,并点击
java+selenium——键盘操作+复制粘贴(actions方法)
java+selenium——简单截图+时间+保存在某个路径
c语言那些细节之a+1和&a+1的区别
c语言那些细节之结构体字节对齐
Java面试:基础32问
Android窗口管理服务WindowManagerService显示窗口动画的原理分析
DELPHI 2007 动态链接库DLL断点调试
热门文章
DELPHI 7 动态链接库DLL断点调试
Android_气泡效果
Java面试:代码题19道
Java面试:基础概念
Java面试:基础题122道
Spring中Bean的作用域
spring中idref元素元素使用
spring中idref元素元素使用
spring实例化bean的方式
BeanFactory与ApplicationContext 区别
Copyright © 2011-2022 走看看