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]

  1. 数值范围
Query: yearsOld:[18 TO 21] Matches 18, 19, 20, 21
  1. 文本范围
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)

  1. 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
  1. 邻近搜索(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)相关推荐

  1. python实现模糊搜索_Python 代码实现模糊查询

    1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vi ...

  2. 你必须知道的23个最有用的Elasticseaerch检索技巧

    题记 本文详细论述了Elasticsearch全文检索.指定字段检索实战技巧,并提供了详尽的源码举例.是不可多得学习&实战资料. 0.前言 为了讲解不同类型ES检索,我们将要对包含以下类型的文 ...

  3. ES(Elasticsearch)基本查询总结(含docker安装,python操作)

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 官网:https://www.elastic.co/guide/index.html 搜索语法:https://www.elastic.co/guid ...

  4. 知识图谱(KG)存储、可视化、公开数据集、图计算、图编程工具分享

    知识图谱(Knowledge Graph),在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘.分析.构建.绘制 ...

  5. ES的Query的DSL语法Filter DSL聚合分析

    1 查询所有(match_all query) GET /lagou-company-index/_search { "query":{ "match_all" ...

  6. 一个很好的 emacs 配置文件范例

    2019独角兽企业重金招聘Python工程师标准>>> 一个很好的 emacs 配置文件范例 (custom-set-variables;; custom-set-variables ...

  7. 10 行 Python 代码写的模糊查询

    导语: 模糊匹配可以算是现代编辑器(在选择要打开的文件时)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vim (Ctrl-P ...

  8. 为什么“ npm install”会重写package-lock.json?

    本文翻译自:Why does "npm install" rewrite package-lock.json? I just recently upgraded to npm@5. ...

  9. MongoDB资料大全

    摘要: 为了帮助大家进一步了解MongoDB,云栖社区组织翻译了GitHub Awesome MongoDB 资源,涵盖MongoDB中常见的库与工具.应用列表.以及相关的文档.教程等资源. Mong ...

最新文章

  1. 20162303 2016-2017-2 《程序设计与数据结构》第六周学习总结
  2. 结对项目开发电梯调度 - 整体设计
  3. Buffer Pool--内存总结2
  4. 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
  5. 【财务思维课】固定资产是应该买呢还是租或是借呢?
  6. Scala与Java差异(二)之条件控制与循环
  7. repo-话说软件详细设计工具
  8. 1.7 编程基础之字符串 14 大小写字母互换 python
  9. 2.4 线性相关和张成空间
  10. oracle 建分区索引_ORACLE 创建组合分区索引
  11. matlab刘卫国课后答案第三版,MATLAB程序设计与应用(刘卫国编)课后实验答案
  12. 说说博客园的“关注”与“网摘”
  13. Documentum之基础(2)
  14. 计算机办公软件中级考试题怎么做,计算机办公软件考试试题
  15. Pycharm制作搞怪弹窗(声音强制最大,屏幕亮度强制最亮,按钮躲避,弹窗炸弹)
  16. 如何利用Python开发App?
  17. UVA 1449 Dominating Patterns
  18. 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。五 (上)京东后台提交订单,用户地址校验...
  19. 【示波器专题】示波器的频响方式
  20. SCSI PRs命令研究总结3 - Linux中的SCSI相关实现

热门文章

  1. 依托电子邮件传播的银行木马QakBot
  2. arduino和NB-IOT模块M5310-A使用教程,app实时控制
  3. 小傻蛋的妹妹跟随小甲鱼学习Python的第二十三、二十四节023、024
  4. 数据库入门教程:如何在 MySQL 中选择除了某一列以外的所有列?
  5. 开源项目源码阅读方法
  6. PyGmae:有限状态机实践(五)
  7. 使用cn2an实现中文数字与阿拉伯数字的相互转换
  8. iOS7 中的新特性
  9. python 爬虫 链家网二手房信息采集代码
  10. 测绘类专业计算机要学什么科目,测绘类专业选考科目要求是什么