【发布时间】:2012-02-01 22:28:13
【问题描述】:
我正在寻找比较 mongo 集合中可能有数百万个文档之间的字段。字段将提前确定,并为每个字段赋予权重。然后,这些权重将用于返回代表“喜欢”文档的建议的文档对。例如,如果正在比较 2 个文档并且两个文档的字段“first_name”具有相同的值,则将引用权重表,并且该对的分数将添加该权重。如果两者之间的另一个字段相同,则分数将更新以反映更高的相似度。
我目前正在通过迭代初始结果集来解决这个问题,然后有一个嵌入式迭代也遍历结果集并将每个文档与第一个迭代器所在的文档进行比较(效率极低)。目前这一切都由 php 完成,因为它通过光标抓取元素。
我愿意接受任何建议,包括 MapReduce 实现(似乎并不真正适用)、光标操作,以及几乎任何你能想到的简化流程的方法,因为我现在在 O(n^2) 复杂度下工作(好一点,因为我跳过了第一个迭代器到目前为止已经涵盖的文档。
【问题讨论】: