代码之家  ›  专栏  ›  技术社区  ›  Jan K.

权衡搜索结果

  •  0
  • Jan K.  · 技术社区  · 15 年前

    PHP/MySQL后端。我有一个YouTube风格的电影数据库。每个视频都有一个名称和类别。视频和类别具有m:n关系。

    我希望我的访客能够搜索视频,并让他们在一个搜索字段中输入搜索条件。我不知道如何返回最好的搜索结果的基础上,是类别,出现在名称。

    3 回复  |  直到 15 年前
        1
  •  1
  •   thexplorer    15 年前

    首先,使用全文搜索。它可以是MySql全文搜索或某种外部全文搜索引擎。我推荐 sphinx . 它非常快速、简单,甚至可以使用SphinxSE与MuSQL集成(因此搜索索引在MySQL中看起来像loke表)。但是您必须安装和配置它。

    其次,考虑按搜索类型拆分搜索结果。任何类型的全文搜索都将返回按相关性排序的匹配项列表。您可以按所有字段搜索并获得单个列表。这是个坏主意,因为按名称和按类别的点击率是混合的。要解决这个问题,你可以进行多次搜索-先按名称搜索,然后按类别搜索。

    1. 根据搜索引擎返回的相关率合并2个集合。这看起来像是单个查询的结果,但您知道每个项目是什么(名称命中或类别命中),所以您可以突出显示它
    2. 执行与上述相同的marge,但为不同的集合分配不同的权重,例如:eaxmple relevancy=0.7*name\u relevancy+0.3*category\u relevancy。这将使搜索结果更自然
    3. 将结果放入选项卡/组,例如“有N个标题和M个类别与您的查询匹配)

        2
  •  2
  •   fcingolani    15 年前
        3
  •  1
  •   Fantius    15 年前

    话虽如此,您可能想要的是一个部分基于规则,部分基于点的系统。例如,如果您的标题与搜索词相等,则不管要点如何,标题都应排在第一位。设计您的搜索,这样您就可以轻松地添加规则和调整点,因为你认为适合产生最好的结果。