设为首页 收藏本站
查看: 1548|回复: 0

[经验分享] Solr lucene的一元、二元拆词

[复制链接]

尚未签到

发表于 2016-12-16 10:55:25 | 显示全部楼层 |阅读模式
  首先需要导入:lucene-analyzers.jar

  下面代码分词的详解:

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.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;

/**
* 一元分词和二元拆词
* @author zhouguohui
*/
public class AnalyzerTest {
public static void main(String[] args) throws Exception{
String str = "测试一元分词和二元拆词拆分汉子,字母,数字等";
Standard_Analyzer(str);
Chiniese_Analyzer(str);
CJK_Analyzer(str);
}
public static void Standard_Analyzer(String str) throws Exception{
Analyzer analyzer = new StandardAnalyzer();      
Reader r = new StringReader(str);      
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.out.println("=====StandardAnalyzer   默认没有词只有字(一元分词)====");
Token t;      
while ((t = sf.next()) != null) {      
System.out.println(t.termText());      
}     
}
public static void Chiniese_Analyzer(String str) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();      
Reader r = new StringReader(str);      
TokenFilter tf = (TokenFilter) analyzer.tokenStream("", r);
System.out.println("=====chinese analyzer   基本等同StandardAnalyzer(一元分词)====");
Token t;      
while ((t = tf.next()) != null) {      
System.out.println(t.termText());      
}     
}
public static void CJK_Analyzer(String str) throws Exception{
Analyzer analyzer = new CJKAnalyzer();      
Reader r = new StringReader(str);      
StopFilter sf = (StopFilter) analyzer.tokenStream("", r);
System.out.println("=====CJKAnalyzer       交叉双字分割(二元分词)====");
Token t;      
while ((t = sf.next()) != null) {      
System.out.println(t.termText());      
}     
}
}

  运行结果为:

=====StandardAnalyzer   默认没有词只有字(一元分词)====




















=====chinese analyzer   基本等同StandardAnalyzer(一元分词)====




















=====CJKAnalyzer       交叉双字分割(二元分词)====
测试
试一
一元
元分
分词
词和
和二
二元
元拆
拆词
词拆
拆分
分汉
汉子
字母
数字
字等

  这两者没有什么太大的区别,第二种对中文分词支持的效果更好一些

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-315110-1-1.html 上篇帖子: solr 从索引随机读性能测试 下篇帖子: Solr中Group和Facet的用法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表