【发布时间】:2011-07-06 08:11:54
【问题描述】:
我有一个搜索引擎。当搜索关键字时,搜索引擎会生成结果。我需要的是找到所有其他产生类似结果的关键字。
例如关键字 k1 给出结果集 R1 = { 1,2,3,4,5,...40 },其中包含最多 40 个文档 ID .我需要获取所有其他关键字 K1 的列表,这些关键字生成的结果类似于 k1 生成的结果。
两个结果集R1和R2之间的相似度S(R1, R2)计算如下:2 * (number of same elements both in _R1_ and _R2_) / ( (total number of elements in _R1_) + (total number of elements in _R2_) ).示例:R1 = {1,2,3} 和 R2 = {2,3,4,5} 给出 S(R1, R2) = (2*|{2,3}|) / |{1,2,3}| + |{2,3,4,5}| = (2*2)/(3+4) = 4/7 = 0.57。
有超过 100,000 个关键字,因此超过 100,000 个结果集。到目前为止,我只能以 O(N^2) 的困难方式解决这个问题,其中每个结果集都与其他每个结果集相比较。这需要很长时间。
有人有更好的主意吗?
一些没有完全解决问题的类似帖子:
【问题讨论】:
标签: algorithm set grouping aggregate similarity