按 Solr 中的表达式排序 [英] Order by an expression in Solr

查看:18
本文介绍了按 Solr 中的表达式排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 SQL 中,您可以通过以下表达式进行排序:

In SQL you can order by an expression like:

SELECT * FROM a
ORDER BY CASE WHEN a.Category = 20 THEN 1 ELSE 0 DESC

因此类别 = 20 的记录位于顶部.

so records who have Category = 20 are on top.

这在 Solr 中可行吗?

Is this possible in Solr?

推荐答案

Solr 没有 if/then(至少在 4.0 之前不会),但它确实具有地图功能并且能够使用 排序中的noreferrer">函数查询.您可能可以使用类似的方法来实现您的目标:

Solr doesn't have an if/then (at least not until 4.0), but it does have a map function and the ability to use function queries in your sort. You can probably use something like this in your sort to achieve what you're after:

 ?q=*&sort=map(category,20,20,case,0),score desc

(未经测试)

这是一个讨论 使用地图一个 if 语句.

这篇关于按 Solr 中的表达式排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆