进行"相关搜索"功能的方法

时间:2020-03-06 14:37:39  来源:igfitidea点击:

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

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

我想有些人以前已经做过此功能,也许可以提供一些不同方法的想法。我不一定要寻找一个成功的想法,因为毫无疑问,解决方案将视站点的大小和性质而有很大不同。

解决方案

我已经尝试了许多不同的方法来实现这一目标,并且取得了不同程度的成功。最后,我认为最好的方法高度依赖于要搜索的域/主题以及用户如何形成查询。

我们对存储以前的搜索的想法对我来说似乎很合理。我很想知道它在实际中是如何工作的(我的意思是,以最真诚的方式-有很多细微差别可能导致这些技术在"现实世界"中失败,尤其是在数据稀疏时)。

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

  • 基于同义词库的方法:为用户使用的每个术语建立词库索引,然后使用启发式方法过滤同义词以向用户显示可能的搜索词。
  • 词干并进行搜索:词干搜索词(例如:使用Porter词干算法,然后使用词干词代替最初提供的查询,并为用户提供精确搜索其指定词的选项(或者相反,首先搜索确切的词,然后使用词干查找词根相同的词根。第二种方法显然需要对已知字典进行一些预处理,或者我们可以在索引词找到它们时收集它们。)
  • 链接:解析用户查询找到的结果,并从前N个结果中提取关键术语(KEA是一种库/算法,我们可以在其中查找关键字提取技术。)

我们是否考虑过在一个轴上具有with关键字与在另一个轴上具有文档的矩阵。一旦找到代表关键字的审查程序集,就可以找到在初始结果集中找到的一组关键字,然后找到一种方法,以根据它们引用的文档数或者初始结果集的插入次数对其他关键字进行排名。