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
如果想要切换对应版本的官方文档,可在页面上调整