代码之家  ›  专栏  ›  技术社区  ›  Andrew Ingram

实现“相关搜索”功能的方法

  •  3
  • Andrew Ingram  · 技术社区  · 17 年前

    我见过一些网站在您执行搜索时列出相关搜索,即它们建议您可能感兴趣的其他搜索查询。

    我想知道在中型网站中建模的最佳方法(流量不足以依赖访问者统计数据来推断关系)。我最初的想法是存储每个唯一查询的前10个结果,然后当执行新的搜索以找到与前10个搜索结果中的一些匹配但理想情况下不匹配所有结果的所有历史搜索时(匹配所有结果可能意味着等效的搜索,因此作为建议没有那么有用)。

    我想有些人以前做过这个功能,可能能够提供一些不同的方法来实现这一点。我不一定在寻找一个获胜的想法,因为解决方案无疑会因网站的大小和性质而异。

    2 回复  |  直到 14 年前
        1
  •  2
  •   rcreswick    17 年前

    你有没有考虑过关键字在1轴上的矩阵与文档在另一轴上的列表。一旦你找到了代表关键字的否决集,就要找到在初始结果集中找到的关键字集,然后找到一种方法,根据其他关键字引用的文档数量或插入初始结果集中的次数对它们进行排名。

        2
  •  2
  •   MikeJ    17 年前

    我尝试了许多不同的方法,取得了不同程度的成功。最后,我认为最好的方法在很大程度上取决于搜索的领域/主题,以及用户如何形成查询。

    你关于存储以前搜索的想法在我看来是合理的。我很想知道它在实践中是如何工作的(我的意思是,以最真诚的方式——有许多细微差别可能会导致这些技术在“现实世界”中失败,特别是在数据稀疏的情况下)。

    以下是我过去使用过并在文献中看到的一些技巧:

    1. 基于同义词库的方法:为用户使用的每个术语建立同义词库索引,然后使用一些启发式方法过滤同义词,向用户显示可能的搜索词。
    2. 屏蔽和搜索:屏蔽搜索词(例如: Porter Stemming Algorithm 然后使用词干术语而不是最初提供的查询,并为用户提供搜索选项 确切地 他们指定的术语(或者做相反的事情,先搜索确切的术语,然后使用词干来查找同源的术语。第二种方法显然需要对已知词典进行一些预处理,或者你可以在索引术语找到它们时收集术语。)
    3. 链接:分析用户查询的结果,并从前N个结果中提取关键术语( KEA 是一个可以用于关键字提取技术的库/算法。)