Каков наилучший способ сортировки списка на основе релевантности из другого сервиса?

Каков наилучший способ сортировки списка на основе релевантности из другого сервиса?
Каков наилучший способ сортировки списка на основе релевантности из другого сервиса? - growtika @ Unsplash

У меня есть сервис листинга продуктов, и он выдает список продуктов для зарегистрированных пользователей, и этот список постранично, с десятью продуктами на странице. Я реализовал эту пагинацию с помощью MySQL LIMIT запроса.

Недавно я получил требование интегрировать его с сервисом релевантности; этот сервис будет предоставлять атрибуты продуктов, относящиеся к текущему пользователю, вошедшему в систему. Мне нужно отсортировать продукты на основе релевантности для пользователя.

var page_no = 0;
var url = "https://relevancy-service-url"
var query = "SELECT * FROM products LIMIT 10 OFFSET page_no;"
var product_list = query -> fetch
var relevent_attributes = api -> get(url, user_id)

Здесь relevent_attributes - это массив, содержащий элементы в следующем формате:

[attribite_1 : 40, attribute_2: 20, attribute_3: 10, attribute_4: 3]

Здесь ключ - это имя атрибута, а значение - рейтинг. На основе рейтинга атрибута мне нужно отсортировать список продуктов.

Каков наилучший способ сортировки этого списка?

Пагинация - это то, что должно происходить после сортировки

Если бы вы сначала сделали пагинацию, а затем сортировку, вы бы сортировали только текущую страницу, а это не то, что вам нужно.

Во-вторых, общая производительность предполагает, что вы хотите выполнять пагинацию на сервере базы данных, а не в памяти; просто чтобы избежать необходимости загружать все данные только для того, чтобы затем отфильтровать большую их часть снова.

Это приводит к неизбежному выводу, что вы должны знать свою сортировку заранее, до получения данных, поскольку запрос должен включать конкретный порядок сортировки.

  1. Получение соответствующих столбцов из службы релевантности
  2. Создайте запрос на основе данных о релевантности (= порядок сортировки) и текущих настроек пагинации
  3. Создайте и верните результат запроса

LetsCodeIt, 27 декабря 2022 г., 01:50