0. 引言

solr作为搜索引擎,就像我们使用mysql一样,在日常业务中,更多接触的则是各类操作语法,所以今天,我们再来学习solr的常用查询语法,为大家在工作中最基本的solr查询打下基础。

solr快速上手:solr简介及安装(一)
solr快速上手:核心概念及solr-admin界面介绍(二)
solr快速上手:managed-schema标签详解(三)
solr快速上手:创建核心/索引/core(四)
solr快速上手:配置从mysql同步数据(五)
solr快速上手:实现从mysql定时自动同步数据(六)
solr快速上手:配置IK中文分词器(七)

1. 基本概念

1.1 通配符

当需要进行正则类匹配时,需要用到通配符

通配符说明
?匹配任意单个字符
*匹配任意多个字符

product_name:?果

在这里插入图片描述

remarks:送货*

在这里插入图片描述

1.2 连接符

solr中要实现多条件查询,就需要通过连接符来实现,支持并&&,或||连接

remarks:送货* && product_name:苹果

在这里插入图片描述

remarks:送货* || product_name:苹果

在这里插入图片描述

2. 常用查询语法

1.1 精确查询

  • 分词查询 filed:value

remarks:送货

在这里插入图片描述

  • 强制不分词查询 field:“value”

remarks:“送货上门”
在查询词外加上双引号

在这里插入图片描述

  • 短语查询 field:“value1 value2”

remarks:“送货上门 不想下楼”
不同的短语之间用空格隔开

在这里插入图片描述

1.2 模糊查询

  • 通配符查询 field:value*, field:v?lue

remarks:送货* | 匹配以“送货”开头的数据
product_name:?果 | 匹配以“果”结尾,且前面只有一个字符的数据
product_name:* | 匹配product_name不为空的数据
*:* 不区分字段,| 查询所有数据

  • 模糊搜索 field:value~N

区别于上述的通配符查询,模糊查询指的是我们在日常查询中出现的错别字,近似词等查询场景,用一个“~”符号表示,后面的N表示允许误差的字符个数,不写默认为1
remarks:送火上门~1

在这里插入图片描述

  • 邻近搜索 field:“value”~N

所谓邻近搜索,就是多个关键词之间的距离在指定范围,主要应用于近似词的搜索,比如搜索“apple pie”~2, 那就是搜索文档中包含“apple”, "pie"分词,且两个分词之间距离不超过2的数据
与模糊查询的区别是这个多了双引号
remarks:“送货 下楼”~2, “送货”与“下楼”之间隔了“上门”与“不想”,距离在2个之内,于是可以查询出来

在这里插入图片描述

1.3 排除查询

  • 排除查询 filed:(* NOT “value1” NOT “value2”)

排除指定的分词,将其他的数据查询出来
remarks:(* NOT “送货” NOT “红的”)

在这里插入图片描述

1.4 范围查询

  • 数值范围查询 field:[v1 TO v2] , field:{v1 TO v2}

price:[10 TO 29] | 表示price >= 10 & price <= 29
price:{10 TO 29} | 表示price >10 & price < 29
price:[10 TO *] | 表示price >= 10

  • 日期范围 field:[YYYY-MM-DDTHH:mm:ssZ TO YYYY-MM-DDTHH:mm:ssZ]

create_time:[2023-05-01T00:00:00Z TO 2023-05-10T23:00:00Z]

在这里插入图片描述

1.5 权重查询

  • 权重查询 field:value1^2 value2^0.5

存在部分场景,我们需要将匹配查询词1的数据优先排序,匹配查询词2的降低优先级,这时就需要用到"^"关键词,通过其对查询得分设置权重
remarks:送货^2

在这里插入图片描述

2. 更多查询

本文我们只列举基础常用的查询,更多查询用法,大家可以查看官方文档拓展:
https://solr.apache.org/guide/solr/latest/query-guide/standard-query-parser.html#fuzzy-searches

在这里插入图片描述

如果想要切换对应版本的官方文档,可在页面上调整

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐