Я использую функцию rord()
в запросах Solr, чтобы повысить результаты запроса по отношению к полю "rank", используя синтаксис, подобный следующему:
bf=rord(cur_rank)^1.8
Алгоритм работает хорошо, нопоследние изменения в Solr указывают на то, что использование ord () и rord () теперь является проблемой памяти.Начиная с журнал изменений :
Поиск и сортировка теперь выполняются для каждого сегмента, что означает, что записи FieldCache, используемые для сортировки и для запросов функций, создаются и используются длясегмент и может быть повторно использован для сегментов, которые не меняются между обновлениями индекса.Хотя в целом это выгодно, это может привести к увеличению использования памяти более чем в 1,3 в определенных сценариях:
[...]
2) Для некоторых запросов функций, таких как ord () и rord (), требуетсяэкземпляр FieldCache верхнего уровня и, таким образом, может привести к увеличению использования памяти.Попробуйте заменить ord () и rord () альтернативами, такими как запросы функций, основанные на ms () для повышения даты.
В нем упоминаются возможные стратегии обработки повышения на основе даты, но как насчетчисло типа «ранг», где ранг - это число от 1 до общее количество записей ?
rord () кажется идеальным ... какие-либо другие стратегии?