генерировать случайные числа между двумя пределами в solr - PullRequest
1 голос
/ 04 октября 2019

У нас есть требование добавить случайное число в поле и отсортировать его.

например;у нас есть ранг, который является целым числом в каждом документе. нам нужно добавить случайное число от 1 до 10, чтобы ранжировать поле в каждом документе и, наконец, отсортировать его по возрастанию.

, делая это, мы можем переставлять продукт каждый раз, когда вызываем ответ solr.

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Мне удалось достичь этого, используя комбинацию суммы и масштаба. Используя функцию масштабирования, я смог масштабировать значения random_ до min и max в моем случае от 0 до 10.

, а затем использовать функцию sum, чтобы добавить это значение в целочисленное поле.

0 голосов
/ 11 октября 2019

Одной из возможностей для достижения этой цели является наличие RandomSortField , которое можно использовать в качестве второго поля для сортировки.

schema.xml:

<fieldType name="random" class="solr.RandomSortField" />
<dynamicField name="random*" type="random" indexed="true" stored="false"/>

тогда вам нужно будет выполнить сортировку во время запроса следующим образом:

sort=rank DESC,random_1 DESC

Итак, вы сможете достичь того, чего хотите, единственное предостережение в том, что значения RandomSortField не будутбыть от 1 до 10, но довольно случайным.

...