相关内容查询的基本算法是什么?

时间:2011-02-01 03:48:30

标签: algorithm

假设我有一个DB问题,比如SO!当用户提出问题时,我想在侧栏上提供相关问题。

这是否有标准化技术?按空格分割问题,搜索每个单词等等...... ??

不确定从哪里开始。

4 个答案:

答案 0 :(得分:3)

这称为更像此功能。像Lucene这样的IR库支持此功能。 Read here了解更多详情。

  1. How MoreLikeThis Works in Lucene
  2. Using Lucene and MoreLikeThis to show Related Content

答案 1 :(得分:0)

很可能您需要设计一个存储关键字的表格,并根据问题的标题搜索相关项目。因此,一旦输入问题,每个关键字的点击计数器将定义问题与其他存储问题的相关性,并且通过排名,您可以按最高命中显示其他问题到最低。这就是我的想法。希望我的想法有所帮助,尽我所能,所以可能不是最好的答案,但帮助它有所贡献。 :)

答案 2 :(得分:0)

一种天真的方式是在常见单词的问题中查询字符串。

例如,此页面上的大多数相关问题都在其标题中包含“queries”“algorithm”这两个词,尽管它们似乎谈论SQL,学习发展等多个领域。

所以基本上你可以提出一个问题,拆分问题字符串,消除停用词,然后尝试在其他问题标题上尽可能多地匹配单词。

一旦你有一组问题,你在标题中有匹配的单词,按照匹配数或其他指标(例如upvotes,answers或viewcount)来排序。

答案 3 :(得分:0)

我会像这样处理问题。首先,删除所有胶水词:“the,a,an,but,if,cant,can,so,not”等等(可能是一个巨大的列表)......

那时应该留下的主要是名词和动词。

使用K-Means聚类等方式对帖子进行聚类。最后,针对您的群集训练一个贝叶斯分类器,当您收到一个新帖子时,将其归类为您的一个群集...最后,从该群集返回其他问题....