solr之模糊搜索(Fuzzy matching)
solr的模糊搜索主要有通配符,范围查询,近距离搜索等几类。下面分别探讨一下用法。
1. 通配符查询
通配符只是对单个term有效,对短语不起作用,ps:短语就是在查询条件上加双引号,比如 title:”xxx yyy”。
其实也就跟一般的通配符的匹配方式差不多了,比如我要查询title里有evaluat开头的文档:
title:evaluat*
Note that:查询语句里一定要用小写,还没研究清楚大小写的区分,但是用大写的不行
另外通配符有很大的性能开销,尤其在匹配到大量数据时,比如:e*,建议不要这样用。
其他例子:
title:evaluat* cipro
title:evaluat?
solr in action 例子:
Query: offi* Matches office, officer, official, and so on
Query: off*r Matches offer, officer, officiator, and so on
Query: off?r Matches offer, but not officerWorks: softwar* eng?neering
Does not work: "softwar* eng?neering"
2. 范围查询
范围查询可以支持时间范围,数值范围,字符串范围等
1. 时间范围:
查询2015-06-07T19:11:45Z TO 2015-06-10T19:11:45Z这个范围的文档,这里要注意格式必须是solr的日期格式,也就是2015-06-07T19:11:45Z这样的格式,必须大写TO
received_date:[2015-06-07T19:11:45Z TO 2015-06-10T19:11:45Z]
- 数值范围
Query: yearsOld:[18 TO 21] Matches 18, 19, 20, 21
- 文本范围
source:[kyowa TO kyowb]
实际匹配kyowa ….kyowb => a->b的范围,也就是只能包含kyowa, kyowb这两个单词
solr in action 例子:
Query: created:[2012-02-01T00:00.0Z TO 2012-08-02T00:00.0Z]
Query: title:[boat TO boulder] Matches boat, boil, book, boulder, etc.
Query: price:[12.99 TO 14.99] Matches 12.99, 13.000009, 14.99, etc
// 这是带边界的例子
Query: yearsOld:{18 TO 21} Matches 19 and 20 but not 18 or 21
Query: yearsOld:[18 TO 21} Matches 18, 19, 20, but not 21
3. 近距离搜索(FUZZY/EDIT-DISTANCE SEARCHING/PROXIMITY SEARCHING)
- EDIT-DISTANCE SEARCHING
这主要是为了解决输入错误的问题,比如输入good时错误的输入为goob了怎么办,solr用波浪…….
线来容错,比如
source:kyowb~1
这里本来要输入kyowa,结果输成了kyowb,那么加上~1就能把正确的kyowa查询出来,~N也就是允许有几个编辑位置错误,这里是1个位置错误,如果你输入kyoab~1,就查询不出来了,因为输入错误两个位置,这时就需要~2了,默认情况下是~2.
1个位置错误时:
2个位置错误时:
fixed
solr in action 例子:
Query: administrator~1 Matches within one edit distance.
Query: administrator~2 Matches within two edit distances. (This is the default
if no edit distance is provided.)
Query: administrator~N Matches within N edit distances.
Please
- 邻近搜索(PROXIMITY SEARCHING)
这个功能主要用来解决短语的模糊搜索问题,比如你要查找chief executive officer,chief financial officer,chief marketing officer….等等如chief x officer的短语怎么办,用OR连起来显然麻烦,这就是邻近搜索的作用了,只需”chief officer”~1即可,~1表示chief officer之间最多只有一个单词,是最多,不是只有一个,也可以是0个,如果有N个单词,即~N,注意,一定要加双引号,这才表示是短语,不然就是一个term了。
solr in action 例子:
Query: "chief officer"~1
– Meaning: chief and officer must be a maximum of one position away.
– Examples: "chief executive officer", "chief financial officer"Query: "chief officer"~2
– Meaning: chief and officer must be a maximum of two edit distances away.
– Examples: "chief business development officer",
"officer chief"Query: "chief officer"~N
– Meaning: Finds chief within N positions of officer.
By David_Ao
solr之模糊搜索(Fuzzy matching)相关推荐
- python实现模糊搜索_Python 代码实现模糊查询
1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vi ...
- 你必须知道的23个最有用的Elasticseaerch检索技巧
题记 本文详细论述了Elasticsearch全文检索.指定字段检索实战技巧,并提供了详尽的源码举例.是不可多得学习&实战资料. 0.前言 为了讲解不同类型ES检索,我们将要对包含以下类型的文 ...
- ES(Elasticsearch)基本查询总结(含docker安装,python操作)
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...
- 知识图谱(KG)存储、可视化、公开数据集、图计算、图编程工具分享
知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘.分析.构建.绘制 ...
- ES的Query的DSL语法Filter DSL聚合分析
1 查询所有(match_all query) GET /lagou-company-index/_search { "query":{ "match_all" ...
- 一个很好的 emacs 配置文件范例
2019独角兽企业重金招聘Python工程师标准>>> 一个很好的 emacs 配置文件范例 (custom-set-variables;; custom-set-variables ...
- 10 行 Python 代码写的模糊查询
导语: 模糊匹配可以算是现代编辑器(在选择要打开的文件时)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P ...
- 为什么“ npm install”会重写package-lock.json?
本文翻译自:Why does "npm install" rewrite package-lock.json? I just recently upgraded to npm@5. ...
- MongoDB资料大全
摘要: 为了帮助大家进一步了解MongoDB,云栖社区组织翻译了GitHub Awesome MongoDB 资源,涵盖MongoDB中常见的库与工具.应用列表.以及相关的文档.教程等资源. Mong ...
最新文章
- 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
- 结对项目开发电梯调度 - 整体设计
- Buffer Pool--内存总结2
- 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
- 【财务思维课】固定资产是应该买呢还是租或是借呢?
- Scala与Java差异(二)之条件控制与循环
- repo-话说软件详细设计工具
- 1.7 编程基础之字符串 14 大小写字母互换 python
- 2.4 线性相关和张成空间
- oracle 建分区索引_ORACLE 创建组合分区索引
- matlab刘卫国课后答案第三版,MATLAB程序设计与应用(刘卫国编)课后实验答案
- 说说博客园的“关注”与“网摘”
- Documentum之基础(2)
- 计算机办公软件中级考试题怎么做,计算机办公软件考试试题
- Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)
- 如何利用Python开发App?
- UVA 1449 Dominating Patterns
- 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。五 (上)京东后台提交订单,用户地址校验...
- 【示波器专题】示波器的频响方式
- SCSI PRs命令研究总结3 - Linux中的SCSI相关实现