通过Solr中的表达式排序

Jan*_*oom 6 solr

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

SELECT * FROM a
ORDER BY CASE WHEN a.Category = 20 THEN 1 ELSE 0 DESC
Run Code Online (Sandbox Code Playgroud)

所以有类别= 20的记录是最重要的.

这在Solr有可能吗?

hro*_*oss 5

Solr没有if/then(至少不到4.0),但它确实有一个map函数,并且能够在你的排序中使用函数查询.你可以在你的排序中使用这样的东西来实现你所追求的目标:

 ?q=*&sort=map(category,20,20,case,0),score desc
Run Code Online (Sandbox Code Playgroud)

(另)

这是一个讨论if语句使用map的线程.