摘要: Solr查询每一次返回的数据都有一定的顺序,特定顺序的结果对于业务来说可能非常重要。

不指定排序

一般我们不指定排序规则,这样的结果能满足大部分需求,默认是用文档的得分作为排序标准。相当于加上了参数sort=score desc,这里的score是solr的一个隐藏字段,衡量这个文档对于该查询参数的权重。使用如下的HTTP查询请求:
http://localhost:8080/solr/core/select?q=*:*&fl=*,score
返回数据:

{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"fl":"*,score",
"wt":"json"}},
"response":{"numFound":106,"start":0,"maxScore":1.0,"docs":[
{
"id":"c3812fee-de7a-48e5-a60d-79a882aca823",
"title_s":"皇帝讽刺剧",
"artist_s":"鲍勃·迪伦",
"country_s":"美国",
"company_s":"哥伦比亚",
"price_d":10.9,
"year_s":"1985",
"type_s":"光盘",
"description_s":"夏天的午后听Bob Dylan的歌特别容易被催眠",
"_version_":1551502047719718912,
"score":1.0
},
...
]
}
}

有一个socre的filed,所有score值为1,是因为我返回了所有数据,它们的权重都相同。

按某一filed排序

有时候,我们只关心某一字段,希望返回的数据根据这一字段排序。例如,我想查找所有书籍中比较便宜的书籍。可以使用查询参数sort=price_s asc,使用如下的HTTP查询请求:
http://localhost:8080/solr/core/select?q=*:*&sort=price_d asc

返回数据:

{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"sort":"price_d asc",
"wt":"json"}},
"response":{"numFound":106,"start":0,"docs":[
{
"id":"1900599155",
"title_s":"渡边淳一作品精选集",
"author_s":"渡边淳一",
"category_s":"外国小说",
"page_i":10000,
"price_d":12.90,
"odertime_dt":"2015-10-02T21:47:04Z",
"publisher_s":"不知名出版社",
"type_s":"图书",
"description_s":"拥有众多的读者,我倍感喜悦。",
"_version_":1552794664615018496
},
...
]
}
}

按多个filed排序

有时候,我希望返回的数据先按权重排序,再按某一filed排序,那么可以使用多个field来排序,此时按第一个排序参数排序,如果第一个参数不能区分顺序,则按第二个参数排序。对于某次查询,我希望先按权重排序,权重相同则按价格排序,那么,查询参数可以为sort=score desc, price asc

含有函数的排序

有时候,排序规则可能需要两个filed的值做数学运算。比如,有一次排序基于两个字段的和,可以使用这样的查询参数sort=sum(x_d, y_d) desc(这里的x字段和y字段都为double类型)。

Solr查询参数sort(排序)的更多相关文章

  1. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  2. Solr专题(二)详解Solr查询参数

    一.前言 上节我们讲到了怎样去搭建solr服务,作为全文检索引擎,怎样去使用也是比较关键的.Solr有一套自己的查询方式,所以我们需要另外花时间去学习它的这套模式. 启动solr solr start ...

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

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  4. 7.Solr查询参数

    一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  (field list)指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id, ...

  5. Solr查询参数

    引自:http://www.cnblogs.com/zhangweizhong/p/5056884.html 一.基本查询 q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, ...

  6. 1、solr 查询

    solr查询参数: q  查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*, fl  指定返回哪些字段,用逗号或空格分隔,注意:字段区分大小写,例如,fl= id,title,sor ...

  7. Solr查询语法

    基于solr版本:6.0.0 当配置好本地的环境之后,就访问http://localhost:8080/solr/index.html.或者是访问已经放在服务器上的solr环境,例如http://10 ...

  8. Solr4:查询参数fq的用法(对结果进行过滤;两组关键词组合查询)

    Solr查询参数文档可以参考: http://wiki.apache.org/solr/CommonQueryParameters#head-6522ef80f22d0e50d2f12ec487758 ...

  9. 【转】Solr客户端查询参数总结

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

随机推荐

  1. bind智能DNS + bindUI管理系统

    bind UI 管理系统 https://github.com/cucker0/BindUI # bind安装 cd /usr/local/src wget http://ftp.isc.org/is ...

  2. django用mysql数据库出现的问题解决

    blog添加不了文章!! 做了个程序,将数据库迁移到服务器之后,发现一个奇怪的错误.Field 'id' doesn't have a default value.查看了一下,程序是没问题的,但是这是 ...

  3. 安装ES

    ES环境搭建 1.创建用户组2.目录授权3.安装jdk4.vi /etc/sysctl.confvm.map_maxcount=65535vm.swappiness=5 sysctl -p 生效5.修 ...

  4. 导入JSONPathExtractorExample.jmx文件报错,导不进去

    导入之前写的JSONPathExtractorExample.jmx文件,导入不进来,报如下错,百度搜索说是缺少jar包 复制别人的信息如下 有的时候我们会参考别人的jmx文件,但是在导入的时候会报错 ...

  5. C# Json数组序列化和反序列总结

    1.创建json数组,例: JArray arrFile = new JArray(); arrFile.Add(new JObject() { new JProperty("FilePat ...

  6. SQL Server Profiler 怎么创建trace来收集sql log(.trc文件)

    1.  先安装SQL Server 2008 R2或其他版本的数据库. 2.  打开profiler, 选择新建一个trace,连接到要监控的SQL Server数据库实例. 打开 SQL Serve ...

  7. Flume 高可用配置案例+load balance负载均衡+ 案例:日志的采集及汇总

    高可用配置案例 (一).failover故障转移 在完成单点的Flume NG搭建后,下面我们搭建一个高可用的Flume NG集群,架构图如下所示: (1)节点分配 Flume的Agent和Colle ...

  8. windbg 如何再内核模式调试用户空间的程序

    1:使用!process 0 0 获取用户空间的所有的进程的信息 !process 0 0 **** NT ACTIVE PROCESS DUMP ****    PROCESS 80a02a60   ...

  9. 查找Python项目依赖的库并生成requirements.txt

    使用pip freeze pip freeze > requirements.txt 这种方式配合virtualenv 才好使,否则把整个环境中的包都列出来了. 使用 pipreqs 这个工具的 ...

  10. Ubuntu16.04系统重装***

    首先准备一个Live CD,就是Ubuntu的安装盘. 备份原理就是将系统文件压缩打包.由于Linux系统所有都是文件,故,只需要将系统打包即可.当然,必须除了当前系统运行中的文件以及临时文件. 打包 ...