我有一个搜索引擎。当搜索关键字时,搜索引擎会生成结果。我需要找到所有生成类似结果的其他关键字。
例如,关键字k1给出结果集R1 = { 1,2,3,4,5,...40 },其中包含最多40个文档ID。我需要获取所有其他关键字K1的列表,这些关键字生成的结果类似于k1生成的结果。
两个结果集R1和R2之间的相似度S(R1, R2)计算如下:
由于关键字超过100,000个,因此结果集也有100,000个以上。到目前为止,我只能通过O(N^2)的复杂方式解决这个问题,其中每个结果集都与其他所有集合进行比较。这需要很长时间。
有没有更好的想法?
以下是一些类似但并未完全解决问题的帖子:
例如,关键字k1给出结果集R1 = { 1,2,3,4,5,...40 },其中包含最多40个文档ID。我需要获取所有其他关键字K1的列表,这些关键字生成的结果类似于k1生成的结果。
两个结果集R1和R2之间的相似度S(R1, R2)计算如下:
2 * (在_R1_和_R2_中相同元素的数量) / ((_R1_中的元素总数) + (_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)的复杂方式解决这个问题,其中每个结果集都与其他所有集合进行比较。这需要很长时间。
有没有更好的想法?
以下是一些类似但并未完全解决问题的帖子: