如何实现“相关”度量度量算法?

时间:2008-09-03 20:21:05

标签: algorithm indexing full-text-search

今天早些时候,当我在Stackoverflow中遇到令人惊讶的功能时,我想问一个问题。当我写下我的问题时,stackoverflow向我提出了几个相关的问题,我发现已经有两个类似的问题。那太棒了!

然后我开始思考如何实现这样的功能。我如何通过相关性来订购问题:

  1. 有更高数量的问题 单词与新问题匹配
  2. 如果匹配的数量是 同样,单词的顺序被认为是
  3. 标题中出现的单词有 更高的相关性
  4. 那将是一个简单的工作流程还是复杂的分数算法? 有些可能会增加召回率吗? 是否有一些库实现了这个功能? 您还会考虑其他哪些方面? 也许杰夫可以自己回答!你是如何在Stackoverflow中实现的? :)

4 个答案:

答案 0 :(得分:3)

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

  1. 对“新”问题应用噪音过滤器,以删除大量对象中常见的单词,例如:'the','和','或'等。
  2. 获取“新”问题中包含的单词数,这些单词与网站上已发布的问题集相匹配。 [A]
  3. 获取“新”问题中的字词与可用字词之间的标记匹配数。 [B]
  4. 根据[A]和[B]计算'相关权重'为'x [A] + y [B]',其中x和y是权重乘数(将较高权重乘数指定为[B]作为标记比简单的单词搜索更有意义)
  5. 获得具有最高'相关权重'的前5个问题。
  6. 启发式可能需要调整以获得最佳结果,但它应该有效。

答案 1 :(得分:1)

您的问题与this one类似,后面还有一些其他答案。

答案 2 :(得分:0)

@marcio

抱歉,我不知道我在这里建议的任何直接API参考,我从未与Lucene合作。

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

也许其他人可以引导并指导你。

答案 3 :(得分:-1)

StackOverflow不会在某个时候开源吗?如果是这样,你总能找到他们是如何做到的。

更新:看来他们说可能开源了。我希望他们这样做。