Solrj случайная сортировка

Я хотел бы знать, возможно ли вернуть SolrDocument в моем ответе, указав сначала запрос, который возвращает, например, 100 самых дорогих продуктов, а затем случайным образом возвращает только 1 продукт в мое приложение.


person user1143609    schedule 18.11.2014    source источник


Ответы (1)


Я не думаю, что solr вернет вам один запрос для ваших нужд, вам нужны 100 самых дорогих (это само по себе основано на критериях), а затем последняя запись со случайным продуктом.

Насколько мне известно, вам придется использовать 2 запроса, чтобы получить результаты. перед этим вы должны включить случайную сортировку полей в свой solr.xml, как показано ниже:

Используйте RandomSortField в вашем solr.xml . Пример в связанном schema.xml в примерном каталоге загрузок solr (в папке solr):

<fieldType name="random" class="solr.RandomSortField" indexed="true" />

<dynamicField name="random_*" type="random" />

Это отсортирует ваш список результатов по полю random_, где вы замените случайно сгенерированным значением (но используйте то же значение, если вы разбиваете результат на страницы, так как это даст вам стабильную сортировку на основе имени поля).

Измените их в solr.xml, как показано выше, и запустите 2 запроса, объедините результат и верните обратно.

  1. запустить запрос ?q=*&sort=prod_amt desc&rows=100 (при условии, что количество вашего продукта находится в поле с именем «prod_amt») — это даст вам 100 самых дорогих продуктов.

  2. запустить запрос ?q=*&sort=random_12939291 desc&rows=1 (здесь 12939291 - просто случайная строка).

Надеюсь это поможет.

Спасибо

Шива Кумар СС

person Shiva Kumar SS    schedule 20.11.2014