代码之家  ›  专栏  ›  技术社区  ›  Jeremy Kauffman

按用户结果排序的可扩展全文搜索

  •  2
  • Jeremy Kauffman  · 技术社区  · 16 年前

    有哪些选项可用于创建可扩展的全文搜索,其中的结果需要按每个用户进行排序?这是针对PHP/MySQL的(Symfony/doctory,如果相关的话)。

    在我们的例子中,我们有一个由用户执行的训练数据库。用户以前做过的训练应该出现在结果的顶部。他们锻炼的频率越高,在搜索匹配中出现的频率就越高。如果有帮助的话,你可以假设我们知道用户提前锻炼的次数。

    可能的解决方案

    -使用Lucene执行全文搜索,并将用户的补全输入到查询中。如中所述 this Stack Overflow thread

    Mysql数据库 -没有原生的全文支持(InnoDB),所以我们使用LIKE或REGEX,这是不可伸缩的。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Quassnoi    16 年前

    MySQL 有本地人吗 FULLTEXT 支持,尽管只在 MyISAM 桌子。

    对于大多数实际任务, Sphinx

    通过使用 SphinxSE MySQL数据库 狮身人面像 ),您可以加入 一个查询中的索引。不过,更新仍然需要外部脚本。

    狮身人面像

    ,您可以编写类似以下内容的查询:

    SELECT  *
    FROM    workouts w
    JOIN    user_workouts uw
    ON      uw.workout = w.id
    WHERE   w.query = 'query query query;filter=user_id,$user_id'
            AND uw.user = $user_id
    ORDER BY
            uw.times_performed DESC
    
        2
  •  0
  •   bajafresh4life    16 年前

    推荐文章