Каков наилучший дефолт для сортировки результатов поиска?
Я работаю над поиском новостей, и я нахожу, что сортировка по количеству совпадений ключевых слов имеет тенденцию вызывать устаревшие результаты, но сортировка по дате имеет тенденцию создавать неуместные результаты.
Как сделать баланс? Я предпочел бы иметь хороший дефолт, поэтому пользователям не нужно гадать о самих настройках.
3 ответа
TL; DR: используйте систему ранжирования нескольких факторов.
Хорошим примером для подражания является то, как Google оценивает результаты поиска. Мы, конечно, не знаем точных деталей их алгоритма ранжирования, но они, возможно, сделали большинство исследований по этому вопросу и добились наибольшего успеха. Мы точно знаем, что Google включает в себя большое количество факторов и применяет взвешивание для каждого, чтобы дать окончательный рейтинг результатов.
Я попытаюсь дать вам грубый пример того, как это можно сделать:
Присвоить значение каждому результату в зависимости от его возраста.
последние 10 минут = 100
последний час = 80
последние 6 часов = 70
последний день = 60
последняя неделя = 40
и др.
Назначить значение плотности ключевых слов
5 или более совпадений = 100
4 матча = 80
3 матча = 60
2 матча = 30
1 матч = 10
0 соответствий = 0
Создать весовую матрицу
Дата vale = 8
Значение плотности ключевого слова = 4
Определите значение ранга для каждой статьи
Умножьте значение для каждого коэффициента на его значение в весовой матрице для каждого товара
В статье 1 день с 4 ключевыми словами будет указано значение ранга:
60 * 8 + 80 * 4 = 800
Статья из 10 минут назад с 3 ключевыми словами будет иметь значение ранга:
100 * 8 + 60 * 4 = 1040
Затем вы показываете каждый результат с помощью вычисленного значения ранга .
Некоторые примечания здесь. Вы, строго говоря, не нуждаетесь в взвешивающей матрице, но это делает легче настраивать результаты - которые вы должны делать. Кроме того, для получения хороших результатов вам может потребоваться включить более двух факторов . Например, вы можете назначить взвешивание по длине статьи; или издателем статьи. Все эти варианты действительно больше искусства, чем науки , поэтому вам нужно немного поиграть с ним.
Как упоминалось в других ответах, не будет ни одного фактора, который вы можете сортировать, чтобы убедиться, что соответствующие результаты находятся на вершине. Вам нужно объединить несколько факторов, эту статью на странице Формула рейтинга Reddit может указывать вам в правильном направлении.
Я бы попытался использовать его с количеством совпадающих ключевых слов (возможно, взвешенным по названию /телу) и дате. Вам придется настроить числовые коэффициенты, хотя вы, по-видимому, не так сильно сосредоточены на новых элементах, как в Reddit.
Как насчет того, чтобы в заголовке статьи новостей и в кратком описании (если таковой имеется) больше веса для совпадений ключевых слов. Вы можете назначить больше очков для совпадений в заголовке, меньше для краткого описания и даже меньше для основного текста.
Затем, в зависимости от даты новостной статьи, вы можете указать дополнительные баллы в зависимости от времени.
Затем суммируем точки и порядок по большинству точек до наименьших точек.
Очевидно, что для этого алгоритма потребуется некоторое вмешательство, но я думаю, что это станет хорошей отправной точкой. Поддерживайте настройку до тех пор, пока она не будет работать.