在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"/>

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

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

solr中英文分词模糊查询相关推荐

  1. php,tp5关键词,分词模糊查询并根据查询条件排序

    php,tp5关键词,分词模糊查询并根据查询条件排序 1.大概需求是我这边搜索"维修工",需要先搜索维修工再搜索维修,用一般模糊查询的话会导致维修的词出不来,所有这边需要先进行分词 ...

  2. Es 模糊查询 match,wildcard

    Es 模糊查询的方式 要求: Es查询: 查询工单信息, 输入 "测试",查出 form_name 为字段中有查询出含有符合内容的数据 match:分词模糊查询: 比如" ...

  3. Solr基础理论【倒排索引,模糊查询】

    一.简介 现有的许多不同类型 的技术系统,如关系型数据库.键值存储.操作磁盘文件的map-reduce[映射-规约]引擎.图数据库等,都是为了帮助用户解决颇具挑战性的数据存储与检索问题而设计的.而搜索 ...

  4. java调用solr的分词查询结果

    java调用solr的分词查询结果 https://www.jianshu.com/p/cb4cc151d23c

  5. spring cloud 集成elasticsearch 实现分词查询和模糊查询

    使用elasticsearch 主要的一个场景就是分词查询,我以电商搜索商品为例:搜索"精华乳液套装" 搜索引擎(ik分词器)会拆成 精华.乳液.套装分别去匹配字段,会根据匹配度计 ...

  6. Lucene使用单字分词及短语查询实现类似全模糊查询效果

    Lucene使用全模糊查询效率慢,现通过单字分词,及短语查询的方式达到类似效果,并极大的提高效率. 预期分词效果: 中华人员共和国Chinese,Come On-->中/华/人/民/共/和/国/ ...

  7. ElasticSearch中文分词和模糊查询

    前言 ElasticSearch是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持PB级别的结构化或者非结构化数据.早期我们应用的全局搜索是简单的SQL模糊查询,为了分担数据库压 ...

  8. Java分词工具模糊查询_Java如何使用elasticsearch进行模糊查询

    这篇文章主要介绍了java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过 ...

  9. solr mysql 分词_solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)...

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

最新文章

  1. 苹果前CEO斯卡利变身创业导师:欲寻下个乔布斯
  2. MacBook 没有响应的应用程序 CUH
  3. 参数变化_光纤激光切割机操作和工艺参数变化对质量的影响
  4. word文档小方格怎么弄_word文档小方格怎么打勾
  5. python实时监控文件目录_c#教程之c#使用filesystemwatcher实时监控文件目录的
  6. (转)功能测试(黑盒测试)常用的策略和方法
  7. 远程运维方案选型指南:官网可下载的ZStack私有云平台 | 凌云时刻
  8. Windows不同压缩软件、压缩算法、压缩率详细对比测试与选择
  9. JavaIO流实现文件传输
  10. tomcat8.0安装及配置教程
  11. 移远ec20型号区别_移远无线4G通讯原装模块-EC20
  12. linux录音硬件电路,电话扩音录音装置电路及制作
  13. ospf(开放式最短路径优先协议)
  14. 电商运营之业务数据报告
  15. HTML5新特性知识点总结
  16. 大数据工程师(开发)面试系列(7)
  17. 论文笔记 | code pretraining(代码预训练系列)
  18. Sublime3安装,使用教程以及优秀的插件推荐
  19. FOTA升级apply_patch解析
  20. 计算机不识别lacie硬盘,如何从LaCie Rugged 外置硬盘上恢复丢失的数据

热门文章

  1. 蒋鑫鸿:9.2黄金原油跌势不止,日内操作策略
  2. matlab受力曲线导入adams中,如何在adams中导入dxf曲线
  3. Prim算法求图的最小生成树(Java)
  4. Mysql 循环更新
  5. 初识python导学案_高中数学 第三章 三角恒等变换 3_2_2 半角的正弦、余弦和正切学案 新人教b版必修4...
  6. ntpd服务状态及日志查询方式
  7. mysql COMMENT字段注释,表注释使用(转)
  8. 简单并查集-加边的无向图
  9. Azure Synapse Analytics (Azure SQL DW)性能优化指南(4)——使用结果集缓存优化性能
  10. STC15单片机 线性按键控制LED流水灯位移