🔎 Учет количества запросов к датасету в релевантности поисковой выдачи (part 2)

В продолжение предыдущего...

После того, как нам удалось извлечь данные о количестве запросов из СУБД, пришло время подумать над тем, как их применить для учета в релевантности поисковой выдачи.

Несколько важных моментов, которые надо будет учесть: 1. В данных могут быть (и скорее всего будут) экстремальные значения; 2. В разных источниках данных, характер распределения значений количества запросов может существенно отличаться.

Чтобы учесть оба этих условия и создать алгоритм, единый для всех источников, можно сделать следующее: 📌 1. Вместо чистого числа запросов для каждой таблицы используем десятичный логарифм - это поможет уменьшить влияние экстремальных значений. Формула будет выглядеть примерно вот так log_views=log10(views+1) где: views — количество запросов к таблице. +1 добавляется, чтобы избежать проблем с нулевыми значениями (логарифм от нуля не определен).

📌 2. Нормализуем получившиеся значения Чтобы привести значения к единому масштабу (например, в нашем случае - от 0 до 1), используем нормализацию. Формула будет следующей:

normalized_log_views = (log_views−min(log_views)) / (max(log_views)−min(log_views))

где: min(log_views) — минимальное значение логарифмированных запросов. max(log_views) — максимальное значение логарифмированных запросов.

📌 3. Определимся с весовым коэффициентом. Он определяет, насколько сильно параметр количества запросов будет влиять на итоговый рейтинг. Его значение можно подобрать экспериментально, но для начала можно использовать значение в диапазоне от 0.1 до 0.5.

Итоговая формула рейтинга для отдельного объекта в поисковой выдаче получится вот такой: R = S + w * normalized_log_views где: S — релевантность страницы (рассчитанная на основе всех остальных факторов); w — весовой коэффициент для параметра частоты просмотров; normalized_log_views — нормализованное значение логарифмированных просмотров.

Дальше осталось только регулярно извлекать данные о количестве запросов из СУБД, рассчитывать наш нормализованный коэффициент (и сохранять его где-то в БД каталога данных) и добавить учет коэффициента в конфиг поисковой выдачи с выбранным весом. Ну и, конечно, потом все это проA/Bтестировать 🤯