在电商的业务中,为了用户体验更好,搜索汉字的首字母就可以搜到想要的内容
比如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
感谢大神分享