Press "Enter" to skip to content

Solr实战:中英文简拼分词(首字母缩写查询)

在电商的业务中,为了用户体验更好,搜索汉字的首字母就可以搜到想要的内容
比如bym或者beiyinmei能够搜到贝因美就很nice
而ik分词只能对中文分词,不能满足我们的要求
下面这个分词支持英文分词,let’s  go

一、下载需要的jar包

wget http://pic.w-blog.cn/pinyinTokenFilter-1.1.0-RELEASE.jar

如果上面链接丢失,点此备份链接: https://pan.baidu.com/s/1Kw4z32hoNQDutPxgr0WYgA 提取码: hayu

二、将jar包复制到lib目录

mv pinyinTokenFilter-1.1.0-RELEASE.jar server/solr-webapp/webapp/WEB-INF/lib

三、编辑自己的项目core 下面conf目录的managed-schema文件

vim server/solr/new_core/conf/managed-schema

四、将以下内容加入到managed-schema文件中

<fieldType name="text_jian_pinyin" class="solr.TextField"> 
<analyzer type="index"> 
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false" useSmart="false" /> 
<filter class="solr.LowerCaseFilterFactory" /> 
<filter class="top.pinyin.index.solr.PinyinTokenFilterFactory" pinyin="true" isFirstChar="true" minTermLenght="2" /> 
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="2" maxGram="20" /> 
</analyzer> 
<analyzer type="query"> 
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false" useSmart="false" /> 
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
<filter class="solr.LowerCaseFilterFactory" /> 
</analyzer> 
</fieldType> 
<field name="keyword" type="text_jian_pinyin" indexed="true" stored="true" />

五、保存,重启solr

solr restart -force

测试

六、将自己的数据导入到core中,楼主使用的是php包solarium https://github.com/solariumphp/solarium
七、测试搜索
http://localhost:8983/solr/#/core/query

本文借鉴自:https://blog.csdn.net/u011142688/article/details/90605593
感谢大神分享

Leave a Reply

Your email address will not be published. Required fields are marked *