要想在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. 启动jar包并生成日志的linux脚本
  2. 网站内容为王?内容页的优化方法有哪些?
  3. HTML的checkbox和radio的美化
  4. matlab 凹盘,刹车盘凹槽是怎么形成的
  5. 用php编写一个日志系统,php利用单例模式实现日志处理类库
  6. STATS 4014 Advanced Data Science
  7. 启用IIS的Gzip压缩功能
  8. html5 osgb,一份价值****元的Smart3d(Context Capture)和大疆智图(DJI Terra)建模评测...
  9. 织梦dede仿站模板标签大全(最全)附带仿站工具
  10. Java多线程面试题,我丝毫不慌
  11. python ipaddr库_python访问纯真IP数据库的代码
  12. 【标准算例数据源】作业车间、流水车间、柔性作业车间、其它
  13. 初始化oracle环境失败,Oracle登录显示无法初始化
  14. 如何快速分割每段视频,并提取画面中任意一帧
  15. 广东省计算机媒体大赛,年广东省大学生计算机设计大赛.doc
  16. 网易云接口手机号验证码验证登录
  17. 经典算法电话号码的字母组合
  18. 【20190405】算法-输入一个字符串,按字典序打印出该字符串中字符的所有排列
  19. c++中获得对象类型 typeid 与 type_info
  20. JS识别二维码、JS生成二维码

热门文章

  1. CentOS 8构建桌面办公环境
  2. 14、美女福利图片API接口,免费好用
  3. 利用大数据挖掘创新市场监管新方式
  4. 无领导小组讨论面试真题解析(八)—— 海上救援
  5. c# IPAddress类
  6. iOS 底层探索 - 消息转发
  7. 谦逊编程(翻译整理)
  8. 以谦逊的心态对待每一个人
  9. 台式电脑没鼠标怎么移动光标_没有鼠标怎么移动光标【设置措施】
  10. 列表, 元组, range() 知识总结