solr5.X版本的拼音搜索

经过几天的研究终于搞定了solr的拼音搜索,现在把经验分享给大家!

一、首先需要准备3个jar包,pinyinAnalyzer4.3.1.jar 、pinyin4j-2.5.0.jar、lucene-analyzers-smartcn-5.2.1.jar ,将这三个jar包放到

/solr-5.2.1/server/solr-webapp/webapp/WEB-INF/lib 这个目录下。lucene-analyzers-smartcn-5.2.1.jar 这个jar在/solr-5.2.1/contrib/analysis-extras/lucene-libs

这个目录下面有,直接COPY过去就行了。另外2个自己去网上下载就行了。

二、在managed-schema.xml(又叫schema) 中加入下面几段配置:

<field name="pinyin" type ="text_pinyin" indexed ="true"    stored ="false" multiValued ="true"/>


 到这里我们的配置还有没完成呢,还要在managed-schema里加几个copyFiled

<copyField source="name" dest="pinyin"/>
<copyField source="brandName" dest="pinyin"/>

然后managed-schema.xml里设置分词器:

 <fieldType name="text_pinyin"    class="solr.TextField" positionIncrementGap="0">
   
     <analyzer type="index">
   
         <tokenizer    class="solr.SmartChineseSentenceTokenizerFactory"/>
   
          <filter    class="solr.SmartChineseWordTokenFilterFactory"/>
   
         <filter    class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory"    minTermLenght="2" />
   
         <filter    class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory"    minGram="1" maxGram="20" />
   
      </analyzer>
   
     <analyzer type="query">
   
         <tokenizer    class="solr.SmartChineseSentenceTokenizerFactory"/>
   
         <filter    class="solr.SmartChineseWordTokenFilterFactory"/>
   
         <filter    class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory"    minTermLenght="2" />
   
         <filter    class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory"    minGram="1" maxGram="20" />
   
      </analyzer>
   
</fieldType>


(这个分词器要注意了,网上跟多的配置是针对solr3.X或4.X的版本的,用这个可能会出问题。这个只针对5.X版本)




就是这么简单,2个步骤搞定。然后需要重新上传配置到ZK里,重新启动solr服务。并且,需要dataimport里重新全量导入初始化数据。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值