输入标题后出现的相关问题,以及查看问题时右侧栏中显示的相关问题似乎表明非常恰当的问题.
Spolsky在一次演讲中表示,Stack Overflow只对它进行SQL搜索并且不使用任何特殊算法.
在这种情况下,存在哪些算法可以给出好的答案.在这种情况下,你如何进行数据库搜索?使标题可搜索并搜索关键字或搜索标签和那些在顶部有很多投票的问题?
如果您收听Stack Overflow播客32(不幸的是成绩单中没有多少内容),您可以听到Jeff Atwood对他如何做到这一点的一些说法.
似乎算法类似于:
提出问题
删除最常用的英文单词(从他从谷歌获得的列表)
提交全文搜索到SQL Server 2008全文搜索引擎
有关全文搜索的更多详细信息,请访问:http://msdn.microsoft.com/en-us/library/ms142571.aspx
这可能已经过时了 - 他们正在谈论转向更好/更快的全文搜索,例如Lucene,我依稀记得杰夫在播客中说这已经完成了.
相关问题边栏将建立在每个问题的标签上(可能是基于标签重叠对它们进行排名,因此共有5个标签>共同的4个标签等).
其余的将基于适用于自然语言处理的启发式算法和算法.这些在通用语言中通常不是很好,但是一旦词汇表减少到单个技术领域(例如编程),它们中的大多数都非常好.
如果您想要进入"相关"算法,请查看Porter干扰词汇算法.
例如,英语的词干分析器应该根据根"cat"和"stemmer","stemming","stemmed"识别字符串"cats"(可能还有"catlike","catty"等).基于"干".词干算法将词语"钓鱼","钓鱼","鱼"和"渔夫"简化为词根"鱼".
处理完文档并完成后,您可以按计数索引词干,然后与其他文档进行比较.这是解决此问题的最基本方法.
还要注意忽略像"the","an","of"等停止词.
这篇文章将帮助你是否有一个算法,告诉两个短语的语义相似性