我正在尝试使用 Postgres DB 加速 RoR 应用程序中的搜索功能。我不会解释它目前是如何工作的......只需采用/achieve 方法即可!
我有 x 条记录(可能数量很大),每条记录都有一个关联的 Facebook ID 号数组...可能最多 5k。我需要使用个人的 friend ID 列表对此进行搜索,以确定搜索数组与任何(以及哪些)记录数组之间是否存在相交。
我不需要知道交集的结果,只需要知道它是真还是假。
有什么好主意吗?!
谢谢!
最佳答案
仅使用纯 ruby,因为您没有提及您的数据存储:
friend_ids = user.friend_ids
results = records.select { |record| !(record.friend_ids & friend_ids).empty? }
结果
将包含至少有 1 个共同的friend_id 的所有记录。如果您必须检查大量记录,这不会很快。
&
是数组交集运算符,它是用 C 语言实现的,你可以在这里看到它: http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-26
关于Ruby - 检查相交是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444090/