Термин сортировки Solr на основе двух полей с AND - PullRequest
0 голосов
/ 24 октября 2019

Я выполняю запрос 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

Меня не волнует цвет глаз или бродячий статус, если только это не обазеленые глаза и шальные.

Этот параметр сортировки работает, но отсутствует флаг "отклонения":

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

IЯ действительно потерян здесь, не уверен, что я использую сортировку неправильно, или я неправильно понимаю синтаксис.

Сообщение об ошибке: 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 голосов
/ 24 октября 2019

Я понял это для моего случая, это было гнездо, если это было необходимо:

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

Возможно, я использую устаревшую версию solr, возможно, поэтому@MatsLindh у меня не сработал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...