Solr 中的表达式排序

发布于 2024-11-16 09:22:30 字数 182 浏览 2 评论 0原文

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

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

因此 Category = 20 的记录位于顶部。

这在 Solr 中可能吗?

In SQL you can order by an expression like:

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

so records who have Category = 20 are on top.

Is this possible in Solr?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情痴 2024-11-23 09:22:30

Solr 没有 if/then(至少在 4.0 之前没有),但它确实有一个映射函数,并且能够在您的 函数查询 href="http://wiki.apache.org/solr/CommonQueryParameters" rel="noreferrer">排序。您可能可以在排序中使用类似的东西来实现您所追求的目标:(

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

未经测试)

这是一个讨论 将映射用于 if 语句

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

(untested)

Here is a thread that talks about using map for an if statement.

記憶穿過時間隧道 2024-11-23 09:22:30

我已经接受了 hross 的答案,但也可以在 Solr 1.3 及更高版本中执行类似的操作,使用:

/select?q={!func}map(Category,20,20,1,0)&sort=score desc

很酷的事情是您仍然可以对其他字段进行排序,因此:

&sort=score desc, name asc

I've accepted hross's answer, but it's also possible to do something like this in Solr 1.3 and up, using:

/select?q={!func}map(Category,20,20,1,0)&sort=score desc

The cool thing is that you can still sort on other fields, so:

&sort=score desc, name asc
黎歌 2024-11-23 09:22:30

如果您使用的是 dismax 请求处理程序,那么您可以以类似的方式使用 boost 查询。 http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29 请注意,这与您的 SQL 示例的功能并不完全相同,但您可以使用它获得相同的结果。

If you are using the dismax request handler, then you can use boost queries in a similar fashion. http://wiki.apache.org/solr/DisMaxQParserPlugin#bq_.28Boost_Query.29 Note that this doesn't function exactly like the your SQL example, but you can achieve the same results with it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文