solr中英文分词模糊查询

标签: solr 英文 分词 | 发表时间:2016-07-14 20:33 | 作者:liuyuntao987
出处:http://www.iteye.com

在solr的分词配置后成功后,在solr后台管理界面进行模糊查询的时候会存在分词匹配个数的问题。打个简单的比方:搜索兰州XXXX酒店。 往往这个时候就有一大批数据出来,只要包含了分词后的词的数据都会搜索出来,给客户的体验不怎么好,本来客户是想只展示兰州的XXXX酒店的,结果北京的、广州的,还有其他名称的酒店都给搜索出来。这个时候就是分词的匹配个数设置的问题了。

首先还是看下分词的配置(IK Analyzer的导入这里不作讲解了,网上很多例子);

在schema.xml增加如下配置:

 <fieldType name="text_ik" class="solr.TextField">

        <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

        <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    </fieldType>

  <dynamicField name="*_sa"  type="text_ik"  indexed="true"  stored="true" />

这里自定了一个类型,在solr中凡是以"_sa"结尾的都将作模糊查询(可以自己定义结尾的类型);



 

 

看看分词的结果:



 

如搜索:hotelname_sa:兰州锦江阳光酒店 

理论上客户想要的是包含了这条语句的所有分词的数据,但是solr默认是or的关系,即包含了兰州、锦江、阳光、酒店中任意的词都会搜索出来,显然不是我们所要的。

解决办法有两种(根据各自的需求自己选择):

1、若可以随意选择匹配程度,不需要100%的匹配,可以在查询语句中增加参数:defType=edismax&mm=60%25  (mm是最小匹配的数量,可以是个固定的值,也可也是个百分比)

如:http://192.168.1.211:8787/solr/hotel_info/select?q=hotelname_sa%3A阳光兰州锦江酒店&fl=hotelname_sa&wt=json&indent=true&defType=edismax&mm=60%25

2、在solr 的schema.xml中把 solrQueryParser 的defaultOperator  变成AND (默认这个参数是被注释掉的,找到后改一下就可以了)

<solrQueryParser defaultOperator="AND"/>

 

如果上面两种都有设置,以第一种优先生效,第二种就被忽略掉了,因此可以根据需要来选择使用



 

 

加上后缀后,只有第一种配置生效:



 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [solr 英文 分词] 推荐:

solr中英文分词模糊查询

- - 开源软件 - ITeye博客
在solr的分词配置后成功后,在solr后台管理界面进行模糊查询的时候会存在分词匹配个数的问题. 打个简单的比方:搜索兰州XXXX酒店. 往往这个时候就有一大批数据出来,只要包含了分词后的词的数据都会搜索出来,给客户的体验不怎么好,本来客户是想只展示兰州的XXXX酒店的,结果北京的、广州的,还有其他名称的酒店都给搜索出来.

全文检索引擎Solr系列——整合中文分词组件IKAnalyzer

- - ImportNew
IK Analyzer是一款结合了词典和文法分析算法的中文分词组件,基于字符串匹配,支持用户词典扩展定义,支持细粒度和智能切分,比如:. 张三 | 说的 | 确实 | 在理. 张三 | 三 | 说的 | 的确 | 的 | 确实 | 实在 | 在理. 整合IK Analyzer比mmseg4j要简单很多, 下载解压缩IKAnalyzer2012FF_u1.jar放到目录:E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib,修改配置文件schema.xml,添加代码:.

Solr SpellCheck 应用

- - 开源软件 - ITeye博客
通过对各类型的SpellCheck组件学习,完成项目拼写检查功能. 本文使用基于拼写词典的实现方式,solr版本为5.3.0. SpellCheck 简述. 拼写检查是对用户错误输入,响应正确的检查建议. 比如输入:周杰轮,响应:你是不是想找 周杰伦. Solr的拼写检查大致可分为两类,基于词典与基于Solr索引.

Solr DocValues详解

- - 企业架构 - ITeye博客
什么是docValues. docValues是一种记录doc字段值的一种形式,在例如在结果排序和统计Facet查询时,需要通过docid取字段值的场景下是非常高效的. 为什么要使用docValues. 这种形式比老版本中利用fieldCache来实现正排查找更加高效,更加节省内存. 倒排索引将字段内存切分成一个term列表,每个term都对应着一个docid列表,这样一种结构使得查询能够非常快速,因为term对应的docid是现成就有的.

solr的使用

- - Web前端 - ITeye博客
solr的原理不和大家一一讲述,主要讲solr在使用过程中的注意事项.  首先是安装solr,安装步骤省略. (不要说我懒,安装步骤导出都是. 成功之后 需要在solr里面建立一个针对你的业务的服务,我想建立一个叫做discuz的服务. 然后你在你的solr目录 :solr-5.5.3/server/solr/  下看见了discuz   ,这是你刚刚创建的,针对某一业务的整个搜索配置都是在这个目录下配置的.

Solr调优参考

- - 淘宝网通用产品团队博客
共整理三部分,第一部分Solr常规处理,第二部分针对性性处理,前者比较通用,后者有局限性. 务必根据具体应用特性,具体调节参数,对比性能. 具体应用需要全面去把控,各个因素一起起作用. 第一部分. E文连接 http://wiki.apache.org/solr/SolrPerformanceFactors.

Solr之缓存篇

- - 淘宝网综合业务平台团队博客
Solr在Lucene之上开发了很多Cache功能,从目前提供的Cache类型有:. 而每种Cache针对具体的查询请求进行对应的Cache. 本文将从几个方面来阐述上述几种Cache在Solr的运用,具体如下:. (1)Cache的生命周期. (2)Cache的使用场景. (3)Cache的配置介绍.

Solr主从备份

- - 研发管理 - ITeye博客
SOLR复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于rsync的SOLR不同方式部署成本过高,被SOLR1.4版本所替换,取而代之的就是基于HTTP协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可. 以下讲解具体操作步骤: . 步骤分主服务器和从服务器,允许有多个从服务器,即从服务器的配置一样.

solr相似匹配

- - CSDN博客推荐文章
相似匹配   在我们使用网页搜索时,会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档. Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能. 如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求.

英文分词的算法和原理

- - 鲁塔弗的博客
分词质量对于基于词频的相关性计算是无比重要的. 英文(西方语言)语言的基本单位就是单词,所以分词特别容易做,只需要3步:. 根据空格/符号/段落 分隔,得到单词组. 过滤,排除掉stop word. ''' re.findall(pattern,待分词文本). 第二步:排除stop word. stopword就是类似 a/an/and/are/then 的这类高频词,高频词会对基于词频的算分公式产生极大的干扰,所以需要过滤.