ruby - 如何在没有 O^2 问题的情况下找到 Ruby 中一串二进制 bin 的最接近对(汉明距离)?

标签 ruby mongodb kdtree hamming-distance

我有一个 MongoDB,其中包含大约 100 万个文档。这些文档都有一个字符串,表示 256 位 bin 的 1 和 0,例如:

0110101010101010110101010101

理想情况下,我想查询近似二进制匹配项。这意味着,如果这两个文件具有以下编号。是的,这就是汉明距离。

Mongo 当前不支持此功能。所以,我不得不在应用层做。

因此,鉴于此,我试图找到一种方法来避免在文档之间进行单独的汉明距离比较。这使得基本上不可能有时间做这件事。

我有很多内存。而且,在 ruby​​ 中,似乎有一个很棒的 gem(算法)可以创建许多树,但我似乎(还)没有一个可以减少我需要进行的查询数量。

理想情况下,我想进行 100 万次查询,找到几乎重复的字符串,并能够更新它们以反射(reflect)这一点。

任何人的想法都会受到赞赏。

最佳答案

我最终将所有文档检索到内存中……(包含 id 和字符串的子集)。

然后,我使用了 BK Tree比较字符串。

关于ruby - 如何在没有 O^2 问题的情况下找到 Ruby 中一串二进制 bin 的最接近对(汉明距离)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734034/

相关文章:

ruby - IRB - Ruby 1.9.x 哈希语法 : {if: true} is not equal to {:if => true}

ruby - 在使用 Mechanize 进行抓取时,我总是在 Ruby 2.0 中遇到 UndefinedConversionError

python - 为什么 Scipy 的 KDTree 这么慢?

ruby - 生成动态 ERB 模板?

node.js - 如何访问预更新 Mongoose 中间件中的文档对象?

node.js - Mongoose - foreach 循环与聚合结果

node.js - Mongoose 填充的问题

algorithm - KD 树 : meaning of `leafsize` parameter

python - 如何使用 Spatial.kdTree 树获取具有 point_id 的对象点的最近邻居

ruby-on-rails - 没有路由匹配 [POST] "/manager"