应群友强烈要求,特此更新此篇博客。其实在我的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
相关推荐
本篇将围绕“跟益达学Solr5之使用IK分词器”这一主题,详细讲解如何在Solr5中集成并运用IK分词器,以及它的工作原理和优化技巧。 首先,让我们了解下什么是分词器。在中文搜索引擎中,由于中文句子没有明显的分隔符...
《跟益达学Solr5之从MySQL数据库导入数据并索引》这篇文章主要探讨了如何使用Apache Solr 5从MySQL数据库中导入数据并建立索引,以便进行高效的全文搜索。Solr是一款强大的开源搜索服务器,它提供了丰富的查询语言、...
《跟益达学Solr5之使用Ansj分词器》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源搜索平台,提供了多种分词器供用户选择,其中之一就是Ansj分词器。这篇文章将深入探讨如何在...
本教程将基于"跟益达学Solr5之索引文件夹下所有文件"的主题,深入探讨如何在Solr5中对文件夹内的所有文件进行索引。 首先,理解索引的概念至关重要。在信息检索领域,索引是一种数据结构,用于快速查找文档中的特定...
《Solr5索引网络上远程文件详解》 在信息技术领域,搜索引擎的高效与便捷是不可或缺的,Apache Solr作为一款强大的开源搜索平台,被广泛应用于各种数据检索场景。本篇我们将深入探讨如何利用Solr5来索引网络上的...
本教程以"跟益达学Solr5之增量索引MySQL数据库表数据"为主题,旨在教授如何利用Solr5来实现对MySQL数据库表数据的增量索引,以便在海量数据中快速检索。 首先,我们需要了解Solr的基本架构。Solr运行在Jetty服务器...
《Solr5与MMSeg4J分词器深度解析》 在中文信息检索和文本分析领域,分词是至关重要的第一步。Solr,作为一款强大的开源全文搜索引擎,提供了多种分词器供用户选择,其中之一就是MMSeg4J。本篇文章将带你深入学习...
《跟益达学Solr5之玩转post.jar》这篇博文主要探讨了如何利用Solr的`post.jar`工具进行数据导入,这是Solr提供的一个非常实用的功能,用于快速将各种格式的数据导入到Solr索引中。在这个过程中,我们不仅会了解`post...
在本篇博文中,“跟益达学Solr5之使用Tika从PDF中提取数据导入索引”,我们将探讨如何利用Apache Solr 5和Tika这两个强大的开源工具,从PDF文档中抽取数据并将其有效地导入到Solr索引库中。Apache Solr是一款功能...
《Solr5批量索引JSON数据详解》 在大数据时代,高效检索与分析大量文本信息是企业业务中不可或缺的一部分。Apache Solr,作为一款强大的开源搜索引擎,提供了对JSON等多格式数据的快速索引和查询能力。本篇将深度...
国内较早接触Solr的技术专家之一,长期致力于Solr的技术研究、实践和生产环境部署,是Solr社区的积极参与者和实践者,以让Solr技术能够在中国得到广泛应用不遗余力并乐此不疲。现就职于国美金融,曾就职于各种大大...
5. **广告策略**:虽然具体内容未详述,但可以推测文档中可能会讨论针对男士益达产品的广告创意、目标受众定位、媒介选择、广告执行计划等方面,这些都是成功推广新产品的关键步骤。 6. **市场潜力与机会**:男性...
实益达:首次公开发行股票招股说明书.PDF
在当今的快节奏市场环境中,益达口香糖凭借其巧妙的整合营销策略,成功地在竞争激烈的口香糖市场中脱颖而出。整合营销传播(IMC)是指企业在营销活动中采取一致的沟通策略,以确保所有信息的统一性,从而达到最佳的...