Solr基于两个字段的AND排序词

时间:2019-10-23 21:55:23

标签: solr

我正在对一大群猫进行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'

1 个答案:

答案 0 :(得分:0)

我为我的案件弄清楚了,如果需要的话,这是一个巢:

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

我可能正在使用过时的solr版本,这可能就是@MatsLindh答案对我不起作用的原因