6

今天早些时候,当我看到 Stackoverflow 中一个令人惊讶的功能时,我打算问一个问题。当我写我的问题标题时,stackoverflow 向我建议了几个相关的问题,我发现已经有两个类似的问题。那太棒了!

然后我开始思考如何实现这样的功能。我将如何按相关性排序问题:

  1. 词数较多的问题与新问题匹配
  2. 如果匹配数相同,则考虑单词的顺序
  3. 标题中出现的词具有更高的相关性

那将是一个简单的工作流程还是一个复杂的评分算法?也许是为了增加召回率?有没有实现这个功能的库?你还会考虑哪些其他方面?也许杰夫可以回答自己!你是如何在 Stackoverflow 中实现的?:)

4

4 回答 4

3

实现这种算法的一种方法是根据启发式函数对问题进行排名,该启发式函数使用以下步骤分配“相关性”权重因子:

  1. 对“新”问题应用噪声过滤器以删除大量对象中常见的单词,例如:“the”、“and”、“or”等。
  2. 获取“新”问题中包含的与网站上已发布的一组问题相匹配的单词数。[一种]
  3. 获取“新”问题中的单词与可用单词之间的标签匹配数。[乙]
  4. 根据 [A] 和 [B] 计算“相关权重”为“x[A] + y[B]”,其中 x 和 y 是权重乘数(为 [B] 分配更高的权重乘数,因为标记更相关比简单的单词搜索)
  5. 获取“相关权重”最高的前 5 个问题。

启发式可能需要调整以获得最佳结果,但它应该有效。

于 2008-09-03T20:39:45.160 回答
1

您的问题似乎与类似,其中有一些额外的答案。

于 2008-09-04T13:41:54.733 回答
0

@marcio

抱歉,我不知道我可以在这里建议的任何直接 API 参考,而且我从未使用过 Lucene。

但是,我知道 Google 桌面使用查询 API 对相关搜索结果进行排名和建议。可以在此处找到有关 API 的更多信息。

也许其他人可以插话并指导您。

于 2008-09-03T21:08:20.787 回答
-1

StackOverflow 不会在某个时候开源吗?如果是这样,您总是可以在那里找到他们是如何做到的。

更新:似乎他们说他们可能会开源它。我希望他们这样做。

于 2008-09-03T20:23:58.363 回答