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);
}
}
查看全文
相关阅读:
SpringBoot + redis + @Cacheable注解实现缓存清除缓存
Linux常用命令
Java8 Stream分组
VMware CentOS网络配置(局域网其它主机可访问Linux虚拟机)
Jenkins实现自动打包,MAVEN打包,Shell脚本启动
Docker常用命令,Docker安装Nginx、Redis、Jenkins、tomcat、MySQL
Postman配置Pre-request scripts预请求对请求进行AES加密
《Java并发编程的艺术》并发编程的基础(四)
linux shell的创建与启动
《Java并发编程的艺术》Java内存模型(三)
原文地址:https://www.cnblogs.com/pony/p/1486285.html
最新文章
hdu 3446(一般图的匹配)
zoj3316(一般图的完美匹配)
J 小雨坐地铁(分层最短路)
D 小阳买水果
hdu2444(二分图的判断和最大匹配)
hdu 3605(二分图多重匹配,匈牙利算法)
洛谷p4180严格次小生成树
poj 1679(次小生成树)
Poj3255(次最短路)
Idea常用设置
热门文章
idea设置数据库连接所有项目都能看到
nginx反向代理+tomcat域名绑定
eclipse使用lombok简化java代码
docker 常用命令
docker修改容器参数
要学习的知识
windows配置ssh免密登录linux
docker容器时间与宿主机时间不一致问题
docker 安装mysql
docker配置nginx做反向代理管理tomcat应用
Copyright © 2011-2022 走看看