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

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

Как сделать баланс? Я предпочел бы иметь хороший дефолт, поэтому пользователям не нужно гадать о самих настройках.

12 голосов | спросил Hayk Saakian 27 Jam1000000amSun, 27 Jan 2013 01:19:55 +040013 2013, 01:19:55

3 ответа


13

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

Затем вы показываете каждый результат с помощью вычисленного значения ранга .

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

ответил JohnGB 27 Jam1000000amSun, 27 Jan 2013 04:40:34 +040013 2013, 04:40:34
2

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

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

ответил Tom 4 FebruaryEurope/MoscowbMon, 04 Feb 2013 02:14:13 +0400000000amMon, 04 Feb 2013 02:14:13 +040013 2013, 02:14:13
1

Как насчет того, чтобы в заголовке статьи новостей и в кратком описании (если таковой имеется) больше веса для совпадений ключевых слов. Вы можете назначить больше очков для совпадений в заголовке, меньше для краткого описания и даже меньше для основного текста.

Затем, в зависимости от даты новостной статьи, вы можете указать дополнительные баллы в зависимости от времени.

Затем суммируем точки и порядок по большинству точек до наименьших точек.

Очевидно, что для этого алгоритма потребуется некоторое вмешательство, но я думаю, что это станет хорошей отправной точкой. Поддерживайте настройку до тех пор, пока она не будет работать.

ответил Rich 27 Jam1000000amSun, 27 Jan 2013 03:58:52 +040013 2013, 03:58:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132