Solr之查询
1. Solr查询概述
用于处理solr查询请求的Request Handler被称为Query Parser,它用于解析用户传入的查询关键词以及查询参数的。
1. solr使用的查询解析器
1. StandardQueryParser
继承自Lucene的QueryParser
对于用户传入的查询表达式要求比较严格
2. DisMax QueryParser
有更高的查询表达式容忍度
3. eDisMax QueryParser
是DisMax QueryParser的改进版
特性
可以使用运算符
wt参数
order参数
fl参数
2. Solr查询处理过程

2. solr查询相关度

3. solr的查询语法解析器
1. solr中的通用查询参数

1. defType
用于指定使用什么类型的Query Parser来解析q参数,从而生成一个Query.
defType=dismax
2. sort
用于对查询结果集按照升序或降序的方式进行排序
3. start
从start参数指定的偏移量位置开始显示结果集
4. rows
指定solr一次返回的最大文档数量
5. fq
用于对普通的query查询返回的结果集进行一次过滤
FQ拥有独立主查询的缓存,当后续的一个查询使用了当前这个相同的FQ,直接命中缓存。
4. Lucene的基本查询语法
1. 全文搜索
在搜索栏中输入要搜索的关键字,例如:login,会返回所有字段值中包含login的文档
2. 使用双引号包起来作为一个短语搜索
3. 按照某个字段搜索
filed: value
filed: "value"
4. 通配符
?匹配单个字符
*匹配0到多个字符
?和*不能用作第一个字符
5. 模糊搜索
在一个单词后面加上~
6. 范围搜索
数值/时间/IP/字符串 类型的字段可以对某一范围进行查询length:[100 TO 200]sip:["172.24.20.110" TO "172.24.20.140"]date:{"now-6h" TO "now"}tag:{b TO e} 搜索b到e中间的字符count:[10 TO *] * 表示一端不限制范围count:[1 TO 5} [ ] 表示端点数值包含在范围内,{ } 表示端点数值不包含在范围内,可以混合使用,此语句为1到5,包括1,不包括5
可以简化成以下写法:age:>10age:<=10age:(>=10 AND <20)
7. 逻辑操作
ANDOR
+:搜索结果中必须包含此项-:不能含有此项+apache -jakarta test aaa bbb:结果中必须存在apache,不能有jakarta,剩余部分尽量都匹配到
8. 转义特殊字符
+ - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
以上字符当作值搜索的时候需要用\转义\(1\+1\)\=2用来查询(1+1)=2
5. Solr标准查询解析器
1. solr标准查询解析器与Lucene查询解析器之间的区别
1. 通配符查询中*可以用在范围区间的两端
field: [* TO 100]
field: [100 TO *]
field: [* TO *]
-field: [* TO *]
6. Solr DisMax

浙公网安备 33010602011771号