🔎 Учет количества запросов к датасету в релевантности поисковой выдачи (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тестировать 🤯