各种查询及参数说明
文章目录
Solr默认有三种查询解析器(Query Parser):
- Standard Query Parser
- DisMax Query Parser
- Extended DisMax Query Parser (eDisMax)
第一种是标准的Parser,最后一种是最强大的。
本文中所提到的参数并不能包含Solr所有参数,具体的使用和更详细的参数请参考官方文档。
常用参数
defType
选择查询解析器类型,例如dismax, edismaxq
主查询参数(field_name:value)sort
排序,例如score desc,price ascstart
起始的数据偏移offset,用于分页raws
一次返回的数量,用于分页fq
filter query 返回结果的过滤查询fl
fields to list 返回的字段(*, score)debug
返回调试信息,debug=timing,debug=resultstimeAllowed
超时时间wt
response writer返回的响应格式
下面是DisMax Parser可以使用的:
qf
query fields,指定查询的字段,指定solr从哪些field中搜索,没有值的时候使用dfmm
最小匹配比例pf
phrase fieldsps
phrase slopqs
query phrase slop
结果高亮:
hl
是否高亮 ,如hl=truehl.fl
高亮field ,hl.fl=Name,SKUhl.snippets
默认是1,这里设置为3个片段hl.simple.pre
高亮前面的格式hl.simple.post
高亮后面的格式
facet统计:
facet
是否启动统计facet.field
统计field
Solr运算符
:
指定字段查指定值,如返回所有值*:*?
表示单个任意字符的通配*
表示多个任意字符的通配(不能在检索的项开始使用*
或者?
符号)~
表示模糊检索,如检索拼写类似于"roam"的项这样写:roam~
将找到形如foam和roams的单词;roam~0.8
,检索返回相似度在0.8以上的记录。- 邻近检索,如检索相隔10个单词的"apache"和"jakarta",
"jakarta apache"~10
^
控制相关度检索,如检索"jakarta apache",同时希望去让"jakarta"的相关度更加好,那么在其后加上^
符号和增量值,即jakarta^4 apache
- 布尔操作符
AND
、||
- 布尔操作符
OR
、&&
- 布尔操作符
NOT
、!
、-
(排除操作符不能单独与项使用构成查询) +
存在操作符,要求符号”+”后的项必须在文档相应的域中存在( )
用于构成子查询[]
包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]
{}
不包含范围检索,如检索某时间段记录,不包含头尾date:{200707 TO 200710}
/
转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : /
注意: “+”和”-“表示对单个查询单元的修饰,and 、or 、 not 是对两个查询单元是否做交集或者做差集还是取反的操作的符号。
比如:AB:china +AB:america ,表示的是AB:china忽略不计可有可无,必须满足第二个条件才是对的,而不是你所认为的必须满足这两个搜索条件
如果输入:AB:china AND AB:america ,解析出来的结果是两个条件同时满足,即+AB:china AND +AB:america或+AB:china +AB:america