应群友强烈要求,特此更新此篇博客。其实在我的Lucene5系列博客里我已经介绍了拼音分词,遗憾的是,大家不能举一反三,好吧,还是我亲自上马吧!

首先我们来看看我当初使用Lucene5是如何实现的,

 在Solr5中,我们只需要为IKTokenizer扩展一个IKTokenizerFactory,为PinyinTokenFilter扩展一个PinyinTokenFilterFactory,为PinyinNGramTokenFilter扩展一个PinyinNGramTokenFilterFactory,其中IKTokenizerFactory我已经扩展过了,剩下需要做的就是自定义PinyinTokenFilterFactory和PinyinNGramTokenFilterFactory了。如果你不知道如何扩展,请参看Solr的StopFilterFactory类源码,照葫芦画瓢。OK,我来全程截图示范,我是如何扩展的?

既然是要扩展PinyinTokenFilterFactory,从类名就知道它是PinyinTokenFilter的工厂类,所以我们首先需要把我之前写的PinyinTokenFilter和PinyinNGramTokenFilter类copy到一个新的项目中来,如图:

 我新建一个solr-analyzer-extra Java Project,把我之前写的几个类copy到如图红色框住的package中,那几个类你在我Lucene5系列博客中都可以找到源码,或者你到我的GitHub上也可以得到相关源码。我的GitHub地址待会儿我会在博客的结尾处贴出来,敬请关注哦!图片中显示还有ik和ansj两个package,这就是我为了前面几篇博客扩展的TokenizerFactory,你懂的!然后我们需要添加依赖的Jar包,如图:

 之所以分Lucene5和Solr5两个包,就是为了方便打包Jar包,这样我就可以把lucene5包下的类单独打包成一个jar,solr5下打包成一个jar,当你仅仅只是在Lucene5下需要使用拼音分词,那solr5包下的类是用不到的,打包成两个jar是为了按需加载类,你懂的!特此说明。

OK,开始在Solr5包下扩展PinyinTokenFilterFactory,我扩展的源码如图:


 扩展的PinyinNGramTokenFilterFactory源码如图:

 对应的PinyinNGramTokenFilter类我稍作了修改,主要是添加了nGramNumber参数,用于控制是否对纯数字进行nGram处理,有时候可能并不希望对类似 2011 这样的数字进行nGram,当然如果你需要对纯数字字符串进行nGram处理,请把nGramNumber参数设置为true即可,默认该值为false。PinyinNGramTokenFilter类我修改的地方如下:

 

 

 

其中定义了一个常量类Constant,就是不想把默认值常量写死在各个类里,所以统一放到了一个常量类里,如图:

上面涉及到的所有源码我待会儿都会在底下附件里上传分享给你们。OK,到此该扩展的类都编写完毕了,我们需要将他们打包成jar,如图:

 

 


 

 

 

 

 然后你就会在你的桌面上看到这个jar包,

 OK,同理,对solr5包下的类进行打包,提供给使用Solr5的用户使用,如图:

 

 

 

 然后两个jar包就都打好了,如图:

 接下来,我们就需要把我们打好的jar包导入到我们的core的lib目录下,如图:

 由于我们的汉字转拼音使用到了pinyin4j类库,所以我们还需要把pinyin4j的jar包也复制到当前core的lib目录下,如图:

 由于我们是先进行中文分词,然后再对分出来的中文词语进行拼音转换,而这里我以IK分词器为例,所以我们还需要把IK的jar包也copy进去,如图:

OK,jar包导入完毕后,我们需要在我们的schema.xml中定义域类型,配置示例如图:

 

 这是默认最基本的配置,当然PinyinTokenFilterFactory和PinyinNGramTokenFilterFactory这两个工厂类是有可选的配置参数可以设置的,请看图:

 

 因此,你也可以这样配置:

 域类型定义好后,你需要在你的某个域上应用这个新定义的text_pinyin域类型,如图:

 OK,启动你的tomcat,开始进行拼音分词测试,如图:

 

 OK,到此关于Solr5中关于拼音分词以及拼音搜索就讲解到这儿了,上述涉及到的jar包和源码请到底下的附件里去下载。solr-analyzer-extra Java Project依赖的jar体积太大,ITEye里无法上传,我已上传到我的百度网盘:看这里,看这里!!!

如果你在学习过程中有任何问题,请通过以下方式联系到我:

益达的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/2222508

跟益达学Solr5之拼音分词相关推荐

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

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

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

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

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

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

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

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

  5. 跟益达学Solr5之使用MMSeg4J分词器

    要想在Sor中使用MMSeg4J分词器,首先你需要自定义一个TokenizerFactory实现类,虽然直接配置Analyzer类也可以,但那样无法配置Analyzer构造函数的参数,不够灵活,存在弊 ...

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

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

  7. 跟益达学Solr5之Facet一瞥

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

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

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

  9. 跟益达学Solr5之Schema.xml详解

    schema.xml是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即Norms,是否存储项向量等等. schema.xml配置文件的根元素就是schema, ...

最新文章

  1. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
  2. 为什么kafka的消费者要有分组的概念
  3. 树梅派kali界面_使用树莓派和kali Linux打造便携式渗透套件
  4. java内部类为什么会持有外部类的引用_为什么内部类持有外部类的引?
  5. MATLAB描绘极坐标图像——polar
  6. (七)Docker网络配置
  7. 修改正文中参考文献标注_论文写作中怎样正确插入参考文献,引用文献如何标注?...
  8. 到 2022 年,75% 的数据库将托管在云端
  9. HTML表格修改字段,HTML表格 – 更改列中单个单元格的宽度
  10. 剑指offer二:替换空格
  11. HDOJ--1599--find the mincost route(floyd+最小环)
  12. 阿里巴巴Aliware十年微服务架构演进历程中的挑战与实践
  13. android keytool工具,keytool工具的使用
  14. UniFi AP 5.5.20的基本使用与设置(普通漫游和无缝漫游)
  15. 七剑下天山,谈谈我认识的精准营销
  16. 首次登陆系统强制修改密码
  17. xlsx表格怎么筛选重复数据_excel表格如何筛选重复数据 在Excel表格的两列数据中提取不重复值的四种方法...
  18. 多语言应用性能监控系统:Elastic APM
  19. 计算机主题桌面更改不了,win7怎么更换电脑主题 win7电脑主题更换不了怎么办
  20. AAA和RADIUS

热门文章

  1. 安装SQLnbsp;SERVERnbsp;2000最后提示“安装…
  2. 冰岛警方选中IDEMIA为其提供新的出入境系统
  3. 学计算机好还是警校好,上警校好还是普通大学好?上警校有的好处在哪?
  4. [基础] AHK函数对象初窥 ① _实例2_实际可用版
  5. 企业全方位改进(CMMI)咨询服务
  6. 初装宽带疾如风,一抽费用逝无踪
  7. 打破金属打印性能世界纪录,这家中国公司开发纳米改性超级金属-1
  8. sticky footer布局,页面不足一屏底部footer固定在视窗底部,否则底部footer自动向下顺延
  9. 从Siri到Mobile AI,华为人工智能突击苹果
  10. 伯明翰大学计算机科学硕士学费,2020年伯明翰大学计算机科学专业研究生申请条件及世界排名|学费介绍...