您好,匿名用户
随意问技术百科期待您的加入

Solr+IKAnalyzer使用带空格的中文搜索词时,无法搜索到结果

+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>
用户头像 提问 2013年 1月10日 @ Replicant 平民 (13 威望)
编辑 2013年 1月10日 @Replicant
分享到:

1个回答

+1 投票
 
最佳答案

你是不是这么搜索的  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",也可以解决。

用户头像 回复 2013年 1月11日 @ Saber 中士 (1,234 威望)
编辑 2013年 1月12日 @Saber
纠结了半天,用了你这种方式果真是可以的 不过不明白为什么要()
我是神人,哈哈,看上面解释啊。
提一个问题:

相关问题

+2 投票
1 回复 956 阅读
用户头像 提问 2013年 1月12日 @ Dante 上等兵 (290 威望)
+4 投票
1 回复 325 阅读
+2 投票
1 回复 401 阅读
用户头像 提问 2012年 12月11日 @ Saber 中士 (1,234 威望)
+3 投票
1 回复 978 阅读
用户头像 提问 2012年 12月10日 @ Apple 上等兵 (542 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...