solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法-【布尔逻辑和 空格后默认加默认搜索字段】

solr4.0+IKAnalyzer 中文搜索,无法查询到结果,目前列举下面两种情况。

情况1:

solr4.0+IKAnalyzer安装好后,根据IKAnalyzer的安装文档在schema.xml做了配置,“随意问技术百科”已索引,但是搜索“随意问”搜索不出结果。

通过在solr的管理界面进行查询,开启 debugQuery(调试模式),查询q参数输入,test:随意问,输出结果中发现:

<lst name="debug">
<str name="rawquerystring">test:随意问</str>
<str name="querystring">test:随意问</str>
<str name="parsedquery">PhraseQuery(test:"随意 问")</str>
<str name="parsedquery_toString">test:"随意 问"</str>
<lst name="explain"/>
<str name="QParser">LuceneQParser</str>
...
说明中文分词有效果了,但是test:随意问,变成了test:"随意 问",应该是 test:随意 test:问,下面是正确的情况下的调试结果:

<lst name="debug">
<str name="rawquerystring">test:随意问</str>
<str name="querystring">test:随意问</str>
<str name="parsedquery">test:随意 test:问</str>
<str name="parsedquery_toString">test:随意 test:问</str>
<lst name="explain"/>
<str name="QParser">LuceneQParser</str>
...

解决方法:

修改schema.xml,将

<schema name="example core zero" version="1.1">
修改为:

<schema name="example core zero" version="1.5">

情况2:

使用solr+IKAnalyzer搭建的全文搜索平台,测试中发现一个问题如下: 

1 将“随意问技术百科”进行索引 
2 搜索“随意问”或“技术百科”等连在一起的词组可以得到相应结果 
3 搜索“随意 问”,中间加了空格,搜索不到相应的结果 

按理说“随意 问”字段进行搜索时会划分为“随意”和“问”两个字段,可是为什么没有相应的结果呢?

下面是该字段及fieldType配置

<field name="title" type="text_suiyiwen" indexed="true" stored="true"/>
 
<fieldType name="text_suiyiwen" class="solr.TextField">
         <analyzer   class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  </fieldType>

解决方法:

你是不是这么搜索的  q=title:随意 问 ?

首先你要了解产生这个原因的原理。

schema.xml

<defaultSearchField>name</defaultSearchField>
solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <int name="rows">10</int>
       <str name="df">text</str>
     </lst>
</requestHandler>

schema.xml中defaultSearchField和solrconfig.xml中df属性都是默认搜索字段的意思,不过后者只针对"/select"请求。优先级是solrconfig.xml的df高于schema.xml的defaultSearchField

设置默认搜索字段的效果:搜索条件为 title:随意 问,中间的空格默认相当于OR,"text"优先于"name",因此搜索条件等价于 title:随意 OR text:问,所以会搜索不出结果。

建议解决方法:

方法1:可以将搜索条件变为 title:(随意 问),等价于 title:随意 OR title:问。 

方法 2:搜索条件不变,查询时URL加上df参数"&df=title",也可以解决。


本文出自随意问技术百科:http://www.suiyiwen.com/question/4424    http://www.suiyiwen.com/question/4413 







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值