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).
我希望我的排序结果如下:
- 绿眼睛的猫和一只流浪猫
- 相关性
- 年龄
所以我的结果将如下所示:
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 的回答对我不起作用
我是运行一个针对一大群猫的solr查询。猫有四个相关属性:
Eye color (string)
Stray (1 yes/0 no)
Relevancy (integer 1-99)
Age(integer representing milliseconds).
我希望我的排序结果如下:
- 绿眼睛的猫和一只流浪猫
- 相关性
- 年龄
所以我的结果将如下所示:
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 的回答对我不起作用