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

[经验分享] 【转】 solr中文分词

[复制链接]

尚未签到

发表于 2015-7-18 00:00:07 | 显示全部楼层 |阅读模式
  我在solr中尝试了以下三种开源中文分词器,其中两种都因为solr版本过高不能用,郁闷,后来将JAR包反编译,找到了原因,下面先简要说明一下三种开源中文分词器
  
  庖丁解牛:google code上最后一次代码提交是2008.6月,不是很活跃,但用的人还很多
  mmseg4j:google code上最后一次代码提交是2010.12月,应该还算活跃,采用MMSeg算法,有两种分词方法:Simple和Complex
  IKAnalyzer:最近很活跃,2011.3月在google code上提交了一个版本
  
  lucene于今年5月份出了3.2版,solr也对应出了3.2版,高版本有个不好的地方,就是开源的中文分词库,跟不上相应的更新速度,本人用的是3.1 版,在lucene中加入庖丁解牛中文分词器和IKAnalyzer最新版,都会报错。
  
  错误原因如下(以IKAnalyzer为例说明):
  不论是庖丁解牛还是IKAnalyzer,要把分词器放到solr中,需要经承solr中的BaseTokenizerFactory这个类,



[java] view plaincopy

  • import java.io.Reader;  
  •   
  • import org.apache.lucene.analysis.TokenStream;  
  • import org.apache.solr.analysis.BaseTokenizerFactory;  
  • import org.wltea.analyzer.lucene.IKAnalyzer;  
  •   
  • public class ChineseTokenizerFactory extends BaseTokenizerFactory {  
  •   
  •     @Override  
  •     public TokenStream create(Reader reader) {  
  •         return new IKAnalyzer().tokenStream("text", reader);  
  •     }  
  •       
  • }  
  这个基类中实现TokenizerFactory接口,create就定义在这个接口中,但返回的类型是Tokenizer,而在solr3.1版 本中Tokenizer是继承TokenStream的,所以这里需要强制转换才不会报错。而庖丁解牛就没那么简单了,需要修改源码才可以,庖丁解牛现在 只支持到solr1.4版本
  
  还有庖丁解牛都不能直接在lucene3.1中使用,代码不提示任何错误,但一运行就报错,不知道为什么原因,估计原因同上,需要修改源代码,有知道的,请转告
  
  mmseg4j也要下最新版本,否则也会报错,具体配置如下:
  把 mmseg4j-all-1.8.4.jar 放到 tomcat/webapps/solr/lib下,mmseg4j1.84包中的字典解压出来,放在solr.home/data目录下,修改solr配置文件:



[xhtml] view plaincopy

  •    
  •         
  •             
  •             
  •         
  •    
  •    
  •         
  •             
  •             
  •         
  •    
  •    
  •         
  •             
  •             
  •         
  •    
  mmseg4j 在 solr 中主要支持两个参数:mode、dicPath。mode 表示是什么模式分词。dicPath 是词库目录,网上说可以默认在当前data目录下寻找,经测试好像不行,必须人工给出绝对路径,或许是高版本的问题吧,或许是我哪里设置错了,然后在 http://localhost:8080/solr/admin/analysis.jsp 可以看 mmseg4j 的分词效果,在Field的下拉菜单选择type,然后输入textComplex,特别是和CJK分词器作对比,很明显,CJK是solr官方自带的支持中日韩的分词器,它对中文是采用的二元分词
  
  
  其实中文分词一直以来是很多人在研究的东西,怎么提高分词效率和匹配正确率是目标,里面的算法实现是它的核心,把它完全吃透,估计都可以写论文了, 呵呵,由于时间有限,只是粗略拿来体验了一下。还有就是关于solr/lucene的搜索效率,优化索引,也是一个值得研究的课题。
  http://blog.iyunv.com/aidayei/article/details/6526986
  参考资料:
  1.http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html
  2.http://lianj-lee.iteye.com/blog/464364
  3.http://www.blogjava.net/RongHao/archive/2007/11/06/158621.html
  4.http://www.iteye.com/news/9637
  5.http://blog.iyunv.com/foamflower/archive/2010/07/09/5723361.aspx

  突然发现IKAnalyzer在3.1.5版本中,已经实现了对solr的TokenizerFactory接口配置的支持,详见下面这篇文章:
  http://linliangyi2007.iteye.com/blog/501228
  
  庖丁解牛分词器支持Lucene3.0.2,需要修改源代码:
  http://blog.iyunv.com/foamflower/archive/2010/07/09/5723361.aspx

运维网声明 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-87750-1-1.html 上篇帖子: Solr基础理论与维护管理快速上手(含查询参数说明) 下篇帖子: solr自动提示
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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