打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于solr不能搜索中文

关于solr不能搜索中文

1、需要配置中文分词器,我在此使用的IKAnalyzer分词器,需要jar :IKAnalyzer3.2.8.jar

schema.xml

  1. <fieldType name="text" class="solr.TextField">  
  2.     <analyzer type="index">  
  3.         <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />  
  4.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  5.         <filter class="solr.LowerCaseFilterFactory" />  
  6.     </analyzer>  
  7.   
  8.     <analyzer type="query">  
  9.         <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" />  
  10.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  11.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />  
  12.         <filter class="solr.LowerCaseFilterFactory" />  
  13.     </analyzer>  
  14. </fieldType>    

分词配好之后,我们可以再solr的管理页面的[ANALYSIS] 的页面来进行分词测试:


这样你输入中华的时候,就可以匹配到 “中华人民共和国”;上图你可以清楚的看到分词器如何将中华人民共和国分割的

通常我们为了搜索的方便,都用keyword来搜索:

  1. <fields>    
  2. <field name="id" type="sint" indexed="true" stored="true" required="true" />    
  3. <field name="userName" type="string" indexed="true" stored="true"/>    
  4. <field name="gender" type="string" indexed="true" stored="true"/>    
  5. <field name="address" type="string" indexed="true" stored="true" />    
  6. <field name="createTime" type="date" indexed="true" stored="true" default="NOW"/>   
  7. <!-- 关键字-->  
  8. <field name="keyword" type="text" indexed="true" stored="true" multiValued="true" />   
  9. </fields>   

  1. <copyField source="gender" dest="keyword"/>    
  2. <copyField source="address" dest="keyword"/>    
  3. <copyField source="userName" dest="keyword"/>  

这样你搜索keyword=xxx 的时候,那么就会去gender,address,userName里面去找符合的结果。


2、如果分词器也配置好了,还是搜索不出来中文(我就出现这样的问题),那可能就是solr的字符集和tomcat的字符集不统一

我输入男子的时候,我发现在tomcat里面出现一条请求


乱码,应该就是字符集的问题,solr的默认字符集为UTF-8;所以我将tomcat的字符集设置成UTF-8

  1. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" />  
重启tomcat

ok,解决问题

http://blog.csdn.net/longxia1987/article/details/7889396

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【solr基础教程之二】索引
关于solr schema.xml 和solrconfig.xml的解释
solr5.3环境搭建
Solr 搭建搜索服务器
Solr4.6.1配置与建立索引——搜索引擎学习(一)
Solr和Spring Data Solr
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服