【问题标题】:Mysql - "Best Match" search algorithmMysql - “最佳匹配”搜索算法
【发布时间】:2010-10-05 02:44:34
【问题描述】:

假设我有一桌教师

每个老师都有这些参数

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

事实是,我会避免为我的用户提供那些下拉菜单来选择排序选项,但我会构建一个足够智能的搜索引擎来计算最佳匹配

对于最佳匹配,我的意思是每个参数的良好平衡,所以第一个结果是最近登录的老师,离你更近的老师等等......但不一定总是使用相同的排序顺序(登录 DESC,然后距离 ASc 等...)

示例: 我设置为排序 lastlogin DESC 的第一个参数。 如何避免每天签到的老师(分数低且离我很远)总是在我的成绩中排名第一,也许一位距离我只有 1 英里的老师,但他每周只签到一次是会因此受到惩罚...

我希望我很清楚.. ;)

【问题讨论】:

    标签: mysql algorithm search-engine estimation


    【解决方案1】:

    您可以构建一个估计函数来计算所有参数的相关性,并为每个参数指定特定的权重。然后对结果进行排序。

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

    【讨论】:

    • 这很有趣,但不幸的是我的数学知识有限,而且我忘记了所有关于统计公式等的研究......我在哪里可以找到一些例子?谢谢
    • 更简单:Mostfavorite(teacher) = a* Experience + b*HourlyCost + c *Last Login... 你可以根据自己的喜好选择合适的a、b。例如:您认为上次登录很重要,然后增加 c。
    • 好的,但是说到 mysql 查询,你如何为 last_login(时间戳)多个 const 值?
    • 基本上我现在的问题是如何将您的公式集成到 MYSQL 查询中......
    • 您可以定义一个函数,我认为 MySQL 允许这样做,并在您的查询中使用。 SELECT favourt(Experien, HourlyCost) as Fav FROM ORDER BY Fav。或者您可以在 TeacherInfo 表中添加 Favor 列 alfer Experience, HourlyCost,...,并在 INSERT 或 UPDATE 时设置值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    • 2017-08-07
    相关资源
    最近更新 更多