Solr 排序术语基于两个带有 AND 的字段

Solr sort term based on two fields with an AND

我是运行一个针对一大群猫的solr查询。猫有四个相关属性:

Eye color (string)
Stray (1 yes/0 no)
Relevancy (integer 1-99)
Age(integer representing milliseconds).

我希望我的排序结果如下:

  1. 绿眼睛的猫和一只流浪猫
  2. 相关性
  3. 年龄

所以我的结果将如下所示:

Green, 1, 50, 300000
Green, 1, 25, 500000
Green, 1, 25, 100000
Blue,  1, 99, 500000
Green, 0, 98, 500000
Red,   1, 98, 400000
Green, 0, 98, 399999

我不关心眼睛的颜色或流浪状态,除非它既是绿色眼睛又是流浪。

此排序参数有效但缺少 "stray" 标志:

if(exists(query({!v=eyes:"Green"})),1,0)+desc,
relevancy+desc,
age+desc

此排序参数不起作用并引发错误:

if((exists(query({!v=eyes:"Green"}))) AND 
(exists(query({!v=stray:1}))),1,0)+desc,
relevancy+desc,
age+desc

我真的迷路了,不确定我是否使用了错误的排序,或者我是否误解了语法。

错误信息:Can't determine a Sort Order (asc or desc) in sort spec 'if((exists(query({!v=eyes:"Green"})) AND exists(query({!v=stray:1}))),1,0) desc,relevancy desc,age desc'

我想出了我的案例,如果需要的话,它就是一个巢:

if(exists(query({!v=eyes:"Green"})),if(exists(query({!v=stray:1})),1,0),0)+desc,

我可能使用的是过时版本的 solr,这可能就是为什么 @MatsLindh 的回答对我不起作用