要想在Sor中使用MMSeg4J分词器,首先你需要自定义一个TokenizerFactory实现类,虽然直接配置Analyzer类也可以,但那样无法配置Analyzer构造函数的参数,不够灵活,存在弊端,所以我一直都是以扩展TokenizerFactory的方式来讲解类似MMSeg4J这样的中文分词器在Solr中的使用。

MMSegTokenizerFactory类我花了3个多小时修改了源码并经过N多测试,表示已经可以使用,我主要的是针对Lucene5 API对MMSegTokenizer类做了升级更新并添加了自定义停用词功能,默认MMSeg4J没有实现自定义停用词功能。相关jar包请到底下的附件里去下载。下面介绍MMSeg4J在solr5中的使用步骤:

1. copy依赖的jar包到当前core\lib目录下,如图:


     2.在你的schema.xml中配置fieldType应用上我扩展的MMSegTokenizerFactory类,具体配置看图:

Xml代码  
  1. <fieldType name="text_mm" class="solr.TextField">
  2. <analyzer type="index">
  3. <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple"
  4. stopwordsPath="mmseg-stopwords/stopwords.dic"/>
  5. </analyzer>
  6. <analyzer type="query">
  7. <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
  8. </analyzer>
  9. </fieldType>

其中mode参数表示MMSeg4J的分词模式,自带有3种可选值:simple,complex,maxword, mode参数不配置默认为maxword模式;stopwordsPath是用来配置自定义停用词加载路径的,默认是相对于classPath的,自定义停用词字典文件放置路径请看图:

 自定义停用词词典文件加载路径配置参数是可选的,不过由于MMSeg4J没有内置停用词功能,所以像空格字符,标点符号等等都会被分出来,所以一般建议添加停用词词典文件。不过要注意的是,自定义的停用词词典文件的编码必须是UTF-8无BOM格式,而且在你使用文本编辑软件打开进行编辑的时候,请务必将你的编辑软件的编码设置为UTF-8,否则可能会出现本来是UTF-8无BOM编码,你打开编辑保存后编码就改变了。当你发现明明停用词在词典文件里,却很奇怪不起作用时,那十有八九是因为词典文件编码已经被破坏,建议词典文件不要自己新建,可以保留一个dic模版文件,每次直接copy过来修改文件名然后再打开编辑。

3.然后你需要在你的某个field域上应用刚才定义的FieldType(域类型),如图:

        OK,现在你可以启动你的Tomcat进行分词测试了,如图:

 mmseg-stopwrods目录下的stopwords.dic停用词词典文件我添加了如下停用词:

 第3个是一个空格字符,第4个是中文状态下的逗号字符,第5个是中文状态下的句号字符。你想要剔除哪些字符,具体留给你们自己去完善。

如果我想配置自定义新词呢,比如么么哒,萌萌哒之类的,默认肯定是分不出来的,该如何配置呢?MMSeg4J默认是内置了自定义词典扩展功能的,且默认加载思路如下:

从默认目录加载词库文件, 查找默认目录顺序:

       1.首先从系统属性mmseg.dic.path指定的目录中加载

       2.若从系统属性mmseg.dic.path指定的目录中加载不到,再从classpath/data目录加载

       3.若从classpath/data目录加载不到,再从user.dir/data目录加载

需要注意的是,MMSeg4J对于字典dic文件的命名有要求,只有以words开头 以.dic结尾的文件才会被加载

知道上述加载原理,那我们只需要把自定义扩展词典文件如图放置即可:

 

 

       到此,MMSeg4J分词器在Solr5中的使用就讲解完毕了,请照葫芦画瓢,100%会配置成功的,如果你看不到效果,请对照截图看清楚词典文件放置路径,检查你的dic文件的编码是否为UTF-8无BOM,如果你还有任何问题,请通过以下方式联系到我:

益达的GitHub地址请猛戳我,用力,吃点劲儿!!!

   益达Q-Q:                7-3-6-0-3-1-3-0-5

   益达的Q-Q群:      1-0-5-0-9-8-8-0-6

转载:http://iamyida.iteye.com/blog/2221224

跟益达学Solr5之使用MMSeg4J分词器相关推荐

  1. 跟益达学Solr5之使用IK分词器

    在Solr中该如何使用IK分词器呢,这是小伙伴们问的频率比较高的一个问题,今晚特此更新此篇博客.其实之前我在其他博客里已经使用了IK分词器,只是我没做详细说明. 在schema.xml配置中其实有很多 ...

  2. 跟益达学Solr5之使用Ansj分词器

    摘要:         OK,直接开门见山,不绕弯子啦!基于上篇博客,我们知道了在Solr中配置分词器有两种方式,一种是直接配置分词器类,比如: Xml代码   <fieldType name= ...

  3. 跟益达学Solr5之使用Tomcat部署Solr

    最近忙着面试以及生活琐事把时间都霸占了,博客拖了4天没更新了,让各位久等了,望多多包涵!不过还好,工作已经敲定了,终于可以安心的学习Solr并分享我学习的点点滴滴啦! 上回我们在Jetty下部署了,不 ...

  4. 跟益达学Solr5之从MySQL数据库导入数据并索引

    最近有小伙伴跟我抱怨说:益达,最近博客更新的有点慢呐.其实不是我变懒了,我是不想因为数量而降低了博客的质量,我需要抱着对你们负责的态度来写每一篇博客,绝不能含糊啊,所以,还望大家多多包涵呐. 今天群里 ...

  5. 跟益达学Solr5之批量索引JSON数据

    假定你有这样一堆JSON数据, Json代码   [ {"id":"1", "name":"Red Lobster",  ...

  6. 跟益达学Solr5之拼音分词

    应群友强烈要求,特此更新此篇博客.其实在我的Lucene5系列博客里我已经介绍了拼音分词,遗憾的是,大家不能举一反三,好吧,还是我亲自上马吧! 首先我们来看看我当初使用Lucene5是如何实现的,   ...

  7. 跟益达学Solr5之使用Tika从PDF中提取数据导入索引(转字:http://www.tuicool.com/articles/JfUfaey)

    开始此篇之前,我已经假定你已经学会了如何在Tomcat下部署Solr5啦.即启动Tomcat后你能看到Solr5的Web UI界面.OK,下面直接进入正题. 首先你需要在你的core根目录下新建一个l ...

  8. 跟益达学Solr5之Facet一瞥

    Facet属于Solr的高级查询部分,之所以在还没有讲解普通Query之前,就开始更新Facet查询,是因为看到很多小伙伴都在为Facet而困扰,其实根本原因还是对Facet不理解.Facet英文单词 ...

  9. 跟益达学Solr5之使用Jetty部署Solr

    开始之前,你首先需要了解Solr是什么,以下是百度百科里对Solr的解释: Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富 ...

最新文章

  1. 内卷时代的晋升述职要“想明白”和“讲清楚”
  2. boost::mp11::mp_empty相关用法的测试程序
  3. 一份从入门到精通NLP的完整指南 | NLPer
  4. php 读csv跳过标题,请问怎么使用Python编辑csv文件时跳过标题
  5. mysql 中float存入int数据显示失真问题
  6. element ui 点击修改开启停用按钮状态
  7. 学习POI处理word
  8. 网络数据库的复制和同步(一)
  9. android项目中如何导入model
  10. Grafana 简单设置
  11. 抖音书单号怎么取名,抖音书单号大概多久能起来
  12. 计算机技术对高分子的意义,计算机技术在高分子材料工程中的应用.docx
  13. 在Vue2中使用百度脑图kityminder-core
  14. 简约至上:你必须知道的产品设计
  15. 强化学习Reinforcement Learning概念理解篇(一)
  16. MOSES的高级特征和功能
  17. Dart学习3、数据类型详解
  18. 实现高德地图签到签退(uniapp)
  19. 微软亚洲研究院院长:“中国不妨引进科技外援”
  20. 信号完整性分析系列——1基本概念

热门文章

  1. IT真的不如卖爆米花的?
  2. 心田花开:成长路上千万不要弄丢了父母
  3. NLP进阶,使用TextRNN和TextRNN_ATT实现文本分类
  4. 教大家如何下載土豆,56,youku等在綫視頻網站視頻
  5. 【密码学原理与实践】【Chapter 1】【导论】
  6. ASP.NET MVC 中的路由传递参数
  7. 强化学习之策略迭代求解冰冻湖
  8. 无线智能灌溉系统功能
  9. 牛客 小米校招 分布式集群消息传递最短路模板题
  10. 计算机月考flash试卷,11青鸟《 flash动画》月考试卷