天天看点

solr查询语法

配置好solr后,可以通过web管理界面进行管理和查询。web界面基本列出了大多数查询参数,可以通过这个学习lucene的查询语法。

solr的查询解析是通过queryparser来配置的(solrconfig.xml),一般我们用默认的即可。其各参数含义与用法简单解释如下:

q:查询输入,必须。可以使用运算符

fq:过滤查询。可以使用运算符

sort:排序的字段,格式为field score,多个字段之间用逗号隔开,比如sum(x_f, y_f) desc, price asc,默认是score desc

start:从哪一行开始

rows:获取多少行

fl:查询要输出的字段,字段之间用逗号隔开,比如title,price,seller,星号代表所有,默认就是星号。

df:定义查询时默认的查询field。

wt:返回的数据类型,可以是json、xml、python、ruby、php、csv等格式。

indent:true/false,返回的xml格式是否需要缩进(格式化展示),默认为false

debugquery:调试查询,会输出查询过程的一些参数。

高亮相关:

高亮是通过searchcomponent来配置的,在solrconfig.xml中配置名为highlight的searchcomponent即可,默认的实现是solr.highlightcomponent。

hl:true/false,是否高亮显示

hl.fl:高亮显示的字段

hl.example.pre:高亮显示的前缀

hl.exapmle.post:高亮显示的后缀

hl.requirefieldmatch:是否只在查询指定的field(只有当hl.usephrasehighlighter为true时才生效)高亮显示,默认是在所有field都高亮

hl.usephrasehighlighter:true/false,使用spanscorer高亮查询短语

hl.highlightmultiterm:true/false,如果spanscorer被启用,这个参数针对前缀/模糊/范围/通配符等开启高亮显示

facet:true/false

facet是solr的高级搜索功能之一,可以给用户提供更友好的搜索体验(类似于面包屑导航的功能)。在搜索关键字的同时,能够按照

facet指定的字段进行分组统计。比如商品的分类、商品的规格等。facet的字段必须被索引,无须分词(分词意义不大),也无须存储。详细可参考

《solr的facet查询》

facet的查询结果返回字段为facet_counts,与responseheader、response同级。

facet.query:类似于filter的语法,对任意字段进行筛选

facet.field:需要进行facet的字段

facet.prefix:对facet字段的前缀过滤

facet.sort:true/false,对facet以哪种顺序返回,true为按照count值从大到小排序,默认为true

spellcheck:拼写检查

spellcheck是通过component的方式实现的,你可以在solrconfig.xml文件中配置searchcomponent来完成拼写

检查的功能,默认的实现是solr.spellcheckcomponent,具体的配置参数和实现原理可以看这里

《spellcheckcomponent》

spatial:空间搜索

spatial是专门针对空间数据进行搜索的,空间位置的索引和存储fieldtype是latlontype或者

spatialrecursiveprefixtreefieldtype,通过使用空间搜索,你可以对点、面等数据建立索引,以圆形、方形或其他形状进

行范围搜索,以及对搜索结果按距离排序等等,具体的配置参数和实现原理可以看这里《spatialsearch》

检索运算符:

冒号":": field:value结构查询,表示字段field值为value的查询。

通配符:?(任意一个字符) *(任意字符)

布尔操作:and(并且,同&&) or(或者,同||) +(包含) -(不包含) not(同!),注意and、or、not均为大写

范围:[a to b](从a到b之间,包含a和b,注意to大写),{a to b}(从a到b之间,不包含a和b,注意to大写)

子运算:()括号跟数学表达式上的差不多,比如:(瓜 or 傻) and 男人

模糊检索:~表示模糊检索,比如:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录

控制相关度:^表示相关度,如检索jakarta apache,同时希望让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache