生产环境:
solr4.7.2
jdk1.6
lucene4.7.2
mmseg4j-core-1.10 (https://github.com/chenlb/mmseg4j-core.git)
mmseg-solr-2.0 (https://github.com/chenlb/mmseg4j-solr.git)
pinyin4j-2.5.0
pinyinAnalyzer (https://github.com/liangbaolin/pinyinAnalyzer.git)
说明:
- 由于mmseg4j本身对max-word模式下分词做了最小只能是2个词的限制,而作者又没有好的办法,所以我们针对自身应用做了一些调整
- 由于pinyinAnalyzer是针对solr5.0以上的版本,所以我们对其源码做了调整,将其整合到了4.7.2中;
- 由于pinyinAnalyzer中转换拼音简称的时候使用的是pinyin4j包中的getPinyinShortCollection方法,而该方法输出简拼时会多输出一个字母(如:“重庆”的输出为[cq,zq,c,z],而其中的单个字母对索引影响极大);因此将其替换为getPinyinShort方法(如:“重庆”的输出为cq,zq)
pinyinAnalyzer源码修改:(这里只列主要的PinyinTokenFilter.java)
需求:
- 需要搜索拼音能搜到对应企业,如搜索”xiaomi”可以查询出“小米通讯技术有限公司”
- 搜索“xiaomi”可以高亮汉字“小米”
- 可以使用拼音简称搜索,如搜索“cq”或“zq”可以搜到包含“重庆”的数据
方案分析:
开始考虑两种方案:
方案一:在应用中将中文搜索词转为拼音,对于关键词统一以英文或拼音的形式搜索
方案二:通过分词手段,在建立索引时直接将分词后的关键词对应的全拼(包括多音字全拼)、简拼(如cq,zq)一并写入索引;
查询时,只需要以同样规则将搜索词分词后再加入拼音,这样既可以搜索中文,又可以搜索拼音
说明:因为方案二的调整仅限于索引层面,而对应用本身毫无影响,所以最终选择方案二
前期含拼音分词测试:
1.分析词“重庆”、查询词“重庆”,分析结果如下:
2.分析词“重庆”、查询词“cq”,分析结果如下:
3.分析词“重庆”、查询词“chongqing”,分析结果如下:
solr配置:
1.将修改过源码的pinyinAnalyzer.jar、msseg4j-core.jar放于solr4.7.2对应lib目录
2.将pinyin4j-2.5.0.jar放于solr4.7.2对应目录下
3.配置schema.xml:
a.定义字段类型
<fieldType name="text_mmseg4j_pinyin" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false" >
<analyzer type="index">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>
<filter class="utn.index.mmseg.solr.PinyinTokenFilterFactory" minTermLength="2" pinyinAll="true" outChinese="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>
<filter class="utn.index.mmseg.solr.PinyinTokenFilterFactory" minTermLength="2" outChinese="true" pingyinAll="true"/>
</analyzer>
</fieldType>
b.将对应field的type改为text_mmseg4j_pinyin
c.重启solr
修改后的源码及jar包见附件
相关推荐
tomcat+solr3.6+mmseg4j 整合+使用例子
Solr3.2+mmseg4j-1.8.4中文搜索引擎 demo 在C盘根目录
Tomcat+Solr+MMseg4j的配置,文档中附带资源下载地址
solr4.7.2tomcat7集成包,下载后可直接运行启动即可,同时集成了IK中文分词器,索引路径在tomcat\bin中,方便迁移,数据库未配置,自行找教程配置
solr6配置mmseg4j,里面包含mmseg4j需要jar包、dic文件、详细配置说明文档,里面有详细截图和需要文件
ik+mmseg分词器,适用于solr6.1版本,内附说明 亲测可用!!!
兼容solr4.10.3的mmseg4j-1.9.1分词器
几乎全新搭建ssm+shiro+solr7+mybatis逆向+maven多项目初步搭建测试,只是大致框架,接下来自己写,下面是linux 下solr7+tomcat8+IK中文分词器 环境 https://download.csdn.net/download/laysolitary/10686971
solr4.9+tomcat+zookeeper集群
solr教程+实例
solr6配置mmseg4j所需dic文件和jar包,包括word.dic,mmseg4j-core-1.10.0.jar,mmseg4j-solr-2.3.0.jar
solr6.0+mysql+IK分词集成
tomcat8.5+solr7+IKAnalyzer5, 已经整合IKAnalyzer中文分词, 直接使用即可
solr 分词器 mmseg4j IKAnalyzer
Linux下配置完成的tomcat8+solr7.4+IK分词器,jdk版本需要使用1.8版本,端口设置的8983,如果有错误,请告知
solr8+tomcat9+实时批量更新数据库+ik中文分词器,solr所用的工具与需要的jar,最新版本
使用Solr3.2 + Paoding中文分词的搜索引擎 使用Demo 测试放在C盘根目录
压缩包内含有solr+ik如何配置的详细介绍以及solr+ik的包,省去了自己去找地址下载的麻烦,经测试使用完全可以在电商电商项目中实现全文检索
solr6配置mmseg4j所需的jar包和dic文件,亲测可用!