solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法
来源:互联网 发布:古天乐李泽楷关系 知乎 编辑:程序博客网 时间:2024/04/30 03:13
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
- solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法
- solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法-【布尔逻辑和 空格后默认加默认搜索字段】
- IKAnalyzer与solr4.0的整合方法
- IKAnalyzer与solr4.0的整合方法
- IKAnalyzer与solr4.0的整合方法
- Solr4+IKAnalyzer的安装配置
- Solr4+IKAnalyzer的安装配置
- Solr4.8—IKAnalyzer的配置
- Solr4.0+IKAnalyzer中文分词安装
- solr4.9.0部署到tomcat7,并整合IKAnalyzer分词器
- SOLR4.4中使用IKAnalyzer
- Gridview查询后,对查询结果进行编辑,可无法定位我要的记录行,解决方法
- Hibernate中 Hql语句中包含中文 无法查询到结果的解决办法
- Aqua Data Studio v10.0 中文搜索结果乱码问题解答
- 已解决:百度地图的查询驾车路线,集成到应用里面无法画出路线,无法得到MKSearchListener的结果
- Solr4.4入门,介绍Solr的安装、IK分词器的配置及高亮查询结果(一)
- solr4.2.1升级到solr4.7.2遇到的所有问题
- 查询到的结果集合并
- Java防止SQL注入
- asp.net后台动态添加表格并将添加的数据保存到数库中
- oracle入门笔记一一【一】
- 换个角度
- java post数据到网页
- solr4.0+IKAnalyzer 中文搜索,无法查询到结果的解决方法
- SSH无需输密码的认证问题
- Discuz!$_G变量的使用方法
- perl 基本语法
- 存储过程无法进行单步调试
- Linux命令--grep
- Yii 快速学习教程------抽丝剥茧(一)
- Yii 快速学习教程------Model用法(二)
- 20130115半个月过去了