【问题标题】:Ruby Object manipulation [closed]Ruby 对象操作 [关闭]
【发布时间】:2012-03-13 17:39:33
【问题描述】:

我们有一个算法来比较来自 MongoDB 的 ruby​​ 对象。花费的大部分时间,它获取结果(~1000),为它们分配权重,并将它们与基础对象进行比较。对于 1000 个对象,此过程大约需要 2 秒。之后,我们按重量排序,取前 10 名。

鉴于初始匹配的数量将继续增长,我正在寻找更有效的方法来比较和排序 Ruby 中的匹配。

我知道这有点含糊,但我们假设它们是 User 对象,其中包含有关此人的数据数组,并且我们将它们与单个用户进行比较,以找到最适合该用户的匹配项。

【问题讨论】:

  • 你是对的,这完全不清楚。
  • 您目前使用的比较过程究竟是什么?
  • 比较是在包含每个用户的字符串的数组集之间进行的。基本上找出每个数组共有多少个元素,总共可能有 5 次数组比较。
  • 这确实是一个更大的算法问题。

标签: ruby ruby-on-rails-3 mongodb mongomapper


【解决方案1】:

您是否考虑过存储/缓存权重?如果权重仅取决于每个用户的属性而不取决于该用户外部的值,则此方法效果很好。

另外,涉及与用户和“基本”用户相关的权重的计算有多复杂?如果它很复杂,您可能需要考虑使用图形数据库,它可以存储特定于 2 个节点/对象之间关系的数据。

【讨论】:

  • 好点。在与每个用户关联的各种数组之间进行比较。他们改变了,但不是很多。比如,UserA 有连接 = [....],而 UserB 有连接 = [...]。连接数组中只有字符串 ID。所以它会比较 2 并找出它们有多少共同的连接。正如我所提到的,连接每晚都会更新,但它们可能不会有太大变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多