【问题标题】:Efficient algorithm for finding related submissions查找相关提交的高效算法
【发布时间】:2010-12-06 06:48:07
【问题描述】:
我最近启动了我的humble side project,并希望在查看提交时添加“相关提交”部分。就像 SO 在这里所做的一样 - 见右栏,标题为“相关”
考虑到每个提交都有一个标题和一组标签,什么是最有效(最佳结果)、最有效(快速、内存友好)的方式来查询数据库以获取相关提交?
我可以想到一种方法来做到这一点(我将作为答案发布)但我很想看看其他人要说什么。或者也许已经有实现这一目标的标准方法?
【问题讨论】:
标签:
c#
database
performance
algorithm
memory
【解决方案1】:
这是我的两分钱解决方案:
为了达到最好的输出,我们需要给查询结果加上“权重”。
首先,假定数据库中的每个提交的权重为零。
然后,如果“池”中的提交与当前提交共享一个标签,我们将为找到的提交添加 +3。因此,如果发现另一个提交与当前提交共享两个标签,我们将 +6 添加到权重。
接下来,我们拆分/标记当前提交的标题并删除“停用词”。
我从 google 看到了停用词列表,但现在我将停用词定义为:[“of”、“a”、“the”、“in”]
示例:
标题“有史以来最好的提交”
结果数组:[“The”、“Best”、“Submission”、“of”、“All”、“Times”]
删除停用词:[“Best”、“Submission”、“All”、“Times”]
然后我们在数据库中查询包含任何上述标题的提交,并为每个结果添加权重:+2
最后按权重对列表进行降序排序,取前N个结果。
你怎么看? (要温柔!)