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

时间: 2024-10-21 21:37:57

solr查询语法的相关文章

Apache Solr查询语法

查询参数 常用: q - 查询字符串,必须的. fl - 指定返回那些字段内容,用逗号或空格分隔多个. start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用. rows - 指定返回结果最多有多少条记录,配合start来实现分页. sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>].示例:(inStock desc, price asc)表示先 &qu

solr学习笔记之solr查询语法

配置好solr后,可以通过web管理界面进行管理和查询.web界面基本列出了大多数查询参数,可以通过这个学习lucene的查询语法. solr的查询解析是通过queryParser来配置的(solrconfig.xml),一般我们用默认的即可.其各参数含义与用法简单解释如下: q:查询输入,必须.可以使用运算符 fq:过滤查询.可以使用运算符 sort:排序的字段,格式为field score,多个字段之间用逗号隔开,比如sum(x_f, y_f) desc, price asc,默认是scor

Solr常用查询语法笔记

1.常用查询 q - 查询字符串,这个是必须的.如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=CreateDate:[20151001 TO 20151031] fl - 指定返回那些字段内容,用逗号或空格分隔多个.  start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用.  rows - 指定返回结果最多

Solr学习总结(四)Solr查询参数

今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出solr查询所需要的参数 wiki 地址:http://wiki.apache.org/solr/FrontPage, 里面有各个参数详细的介绍.   一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写

solr匹配查询相关-solr查询时,为什么不能匹配多个结果返回

问题描述 solr查询时,为什么不能匹配多个结果返回 我在从solr中查询时,默认条件用的是or,但是遇到了一个问题,同一个core中,使用 查询条件如下:commodityReviewId:25021921 25026921 ,应该返回两条数据, 怎么结果只返回25021921对应的数据,如果25026921放在前面,则返回25026921对应的数据,不知道为什么这种查询会失效,关键是同一个core中,我用别的字段这样查没问题的,求解答,在线等

C#3.0 LINQ查询语法

首先来看一个很简单的LINQ查询例子,查询一个int 数组中小于5的数字,并按照大小顺序排列:class Program{    static void Main(string[] args)    {        int[] arr = new int[] { 8, 5, 89, 3, 56, 4, 1, 58 };         var m = from n in arr where n < 5 orderby n select n;        foreach (var n in m

java通过solr查询hbase数据,如何自动映射到java实体类?

问题描述 java通过solr查询hbase数据,如何自动映射到java实体类? 现在的情况是,使用simplehbase可以将查询结果自动映射到实体中,但simplehbase的过滤手段不如solr全面,能否将simplehbase与solr结合起来使用?如果可以,该怎么做呢?如果不可以,有没有办法可以达到以下目的?目的:1)可以模糊查询2)查询出的结果自动映射到java实体类中 解决方案 http://www.cnblogs.com/Leo_wl/p/4582018.html

LINQ 查询语法

        在LINQ中,数据源和查询结果实际上都是IEnumerable<T>或IQueryable<T>类型对象           LINQ主要的功能就是实现查询,LINQ查询存在以下两种形式.           ⑴ Method Synta (查询方法方式):主要利用 System.Linq.Enumerable 类中定义的扩展方法和Lambda 表达式方式进行查询.它提供了一种增强了程序的可读性的语法,易读易写,写时不容易出错.Visual Studio 2010为

select-mysql 查询语法有单引号,但是我的where条件也有单引号,怎么解?

问题描述 mysql 查询语法有单引号,但是我的where条件也有单引号,怎么解? 比如select * from t where name like '%a's%'这种情况 解决方案 两个单引号 select * from t where name like '%a''s%' 解决方案二: select * from t where name = 'test''abc'; 解决方案三: 不是,是我的条件是 name=test'abc这种 解决方案四: SQL WHERE 子句中的单引号sql