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);
}
}
查看全文
相关阅读:
RibbonToggleButton
civil 3d 体积曲面提取等高线
Civil 3D中各种ObjectID集合中的对象具体是什么类型?
Civil 3D曲面高程分析
C++不允许使用指向不完整类型的指针
LNK2019 无法解析的外部符号 "int __cdecl acedGetReal(wchar_t const *,double *)"
Civil 3D中获取路线上任意一点处切线方位角
AutoCAD 实体添加超级链接
论坛中看到的代码,留存备用 批量创建dwg文件
ionic3 新增主题色
原文地址:https://www.cnblogs.com/pony/p/1486285.html
最新文章
从Indy9升级到Indy10时IdTcpServer的变化
DELPHI高性能大容量SOCKET并发(四):粘包、分包、解包
raw socket 发送数据包
AE栅格分类渲染问题解决
ArcGIS字段计算器 Field Calculator错误
AE开发常用经验汇集
ArcGIS SDE for Oracle 客户端直连错误解决
从Python爬虫到SAE云和微信公众号:二、新浪SAE上搭建微信服务
从Python爬虫到SAE云和微信公众号:一、糗事百科爬虫
Oracle11g安装错误解决
热门文章
dataGridView设置行列不可用 失效问题
Win10 1607 频繁断网,迅雷断网以及迅雷下载崩溃解决方案
int数组转换为string字符串
delphi文件操作的总结
为DBNavigator的按钮加中文
delphi向SQL Server2005中存取图片
delphi从dll中调用图片资源
delphi7调用数据库连接属性
delphi7完全关闭一个窗体
LINQ还是很方便的
Copyright © 2011-2022 走看看