`
lxwt909
  • 浏览: 573371 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

跟益达学Solr5之拼音分词

    博客分类:
  • Solr
阅读更多

         应群友强烈要求,特此更新此篇博客。其实在我的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

 

     



 

  • 大小: 26.6 KB
  • 大小: 14.4 KB
  • 大小: 9 KB
  • 大小: 59.5 KB
  • 大小: 49.1 KB
  • 大小: 60 KB
  • 大小: 53.8 KB
  • 大小: 40.4 KB
  • 大小: 52.8 KB
  • 大小: 37.1 KB
  • 大小: 30.8 KB
  • 大小: 42.8 KB
  • 大小: 66.4 KB
  • 大小: 73.8 KB
  • 大小: 81.1 KB
  • 大小: 170.6 KB
  • 大小: 80.5 KB
  • 大小: 91.9 KB
  • 大小: 43 KB
  • 大小: 65.5 KB
  • 大小: 66.7 KB
  • 大小: 78 KB
  • 大小: 74.4 KB
  • 大小: 34.6 KB
  • 大小: 106.4 KB
  • 大小: 121.5 KB
  • 大小: 108 KB
  • 大小: 105.3 KB
  • 大小: 35.1 KB
  • 大小: 43.5 KB
  • 大小: 47.2 KB
  • 大小: 73 KB
  • 大小: 72.3 KB
  • 大小: 66 KB
  • 大小: 101.1 KB
  • 大小: 74.5 KB
10
7
分享到:
评论
3 楼 fengshizty 2016-09-23  
楼主辛苦啦   ,能否共享下源码
2 楼 play1369 2016-01-25  
多音字有问题,比如:重庆 zhongqing
没有chongqing
1 楼 oaibf 2015-07-01  
拼音搜索 怎么搜出对对应的中文呢?

相关推荐

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

    本篇将围绕“跟益达学Solr5之使用IK分词器”这一主题,详细讲解如何在Solr5中集成并运用IK分词器,以及它的工作原理和优化技巧。 首先,让我们了解下什么是分词器。在中文搜索引擎中,由于中文句子没有明显的分隔符...

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

    《跟益达学Solr5之从MySQL数据库导入数据并索引》这篇文章主要探讨了如何使用Apache Solr 5从MySQL数据库中导入数据并建立索引,以便进行高效的全文搜索。Solr是一款强大的开源搜索服务器,它提供了丰富的查询语言、...

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

    《跟益达学Solr5之使用Ansj分词器》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源搜索平台,提供了多种分词器供用户选择,其中之一就是Ansj分词器。这篇文章将深入探讨如何在...

    跟益达学Solr5之索引文件夹下所有文件

    本教程将基于"跟益达学Solr5之索引文件夹下所有文件"的主题,深入探讨如何在Solr5中对文件夹内的所有文件进行索引。 首先,理解索引的概念至关重要。在信息检索领域,索引是一种数据结构,用于快速查找文档中的特定...

    跟益达学Solr5之索引网络上远程文件

    《Solr5索引网络上远程文件详解》 在信息技术领域,搜索引擎的高效与便捷是不可或缺的,Apache Solr作为一款强大的开源搜索平台,被广泛应用于各种数据检索场景。本篇我们将深入探讨如何利用Solr5来索引网络上的...

    跟益达学Solr5之增量索引MySQL数据库表数据

    本教程以"跟益达学Solr5之增量索引MySQL数据库表数据"为主题,旨在教授如何利用Solr5来实现对MySQL数据库表数据的增量索引,以便在海量数据中快速检索。 首先,我们需要了解Solr的基本架构。Solr运行在Jetty服务器...

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

    《Solr5与MMSeg4J分词器深度解析》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源全文搜索引擎,提供了多种分词器供用户选择,其中之一就是MMSeg4J。本篇文章将带你深入学习...

    转自:跟益达学Solr5之玩转post.jar

    《跟益达学Solr5之玩转post.jar》这篇博文主要探讨了如何利用Solr的`post.jar`工具进行数据导入,这是Solr提供的一个非常实用的功能,用于快速将各种格式的数据导入到Solr索引中。在这个过程中,我们不仅会了解`post...

    跟益达学Solr5之使用Tika从PDF中提取数据导入索引

    在本篇博文中,“跟益达学Solr5之使用Tika从PDF中提取数据导入索引”,我们将探讨如何利用Apache Solr 5和Tika这两个强大的开源工具,从PDF文档中抽取数据并将其有效地导入到Solr索引库中。Apache Solr是一款功能...

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

    《Solr5批量索引JSON数据详解》 在大数据时代,高效检索与分析大量文本信息是企业业务中不可或缺的一部分。Apache Solr,作为一款强大的开源搜索引擎,提供了对JSON等多格式数据的快速索引和查询能力。本篇将深度...

    Solr 权威指南上下卷

    国内较早接触Solr的技术专家之一,长期致力于Solr的技术研究、实践和生产环境部署,是Solr社区的积极参与者和实践者,以让Solr技术能够在中国得到广泛应用不遗余力并乐此不疲。现就职于国美金融,曾就职于各种大大...

    益达新产品男士益达推出市场广告策划书学习教案.pptx

    5. **广告策略**:虽然具体内容未详述,但可以推测文档中可能会讨论针对男士益达产品的广告创意、目标受众定位、媒介选择、广告执行计划等方面,这些都是成功推广新产品的关键步骤。 6. **市场潜力与机会**:男性...

    实益达:首次公开发行股票招股说明书.PDF

    实益达:首次公开发行股票招股说明书.PDF

    从整合营销看益达广告.docx

    在当今的快节奏市场环境中,益达口香糖凭借其巧妙的整合营销策略,成功地在竞争激烈的口香糖市场中脱颖而出。整合营销传播(IMC)是指企业在营销活动中采取一致的沟通策略,以确保所有信息的统一性,从而达到最佳的...

Global site tag (gtag.js) - Google Analytics