Mysql - алгоритм поиска "Best Match" - PullRequest
2 голосов
/ 05 октября 2010

Давайте предположим, что у меня есть таблица, полная учителей .

, у каждого учителя есть эти параметры :

Experience
Hourly Cost
Distance
Last Login
Total Rating (like an eBay score given by student)

Дело в том,что я бы не стал давать своим пользователям эти выпадающие меню для выбора варианта сортировки, но я бы создал поисковую систему, достаточно умную, чтобы вычислить лучшее совпадение

для лучшего соответствия, я имею в виду хорошеебаланс каждого параметра, поэтому первые результаты - это учителя, которые недавно вошли в систему, которые ближе к вам и т. д., но не всегда обязательно с той же последовательностью сортировки (логин DESC, ТО расстояние ASc и т. д ...)

пример: я установил в качестве первого параметра сортировки lastlogin DESC.как избежать того, чтобы учитель (с небольшим счетом и далеким от меня), который регистрируется каждый день, всегда будет первым в моих результатах, и, возможно, учитель, который находится всего в 1 миле от меня, но он регистрируется только один раз в неделю,будет наказан за это ...

я надеюсь, что я был ясен ..;)

1 Ответ

3 голосов
/ 05 октября 2010

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

Mostfavorite(teacher) = A(teacher.Experience) + B(teacher.HourlyCost) + C(teacher.Distance) + D(teacher.LastLogin) + E(teacher.TotalRating)
...