ruby-on-rails - 在 Rails 中实现 k-d 树 - 需要帮助才能开始

标签 ruby-on-rails ruby kdtree

我需要根据两个值的范围查询我的数据库,这两个值本质上是我数据库中的两列 float 类型。

在做了一些研究之后,我缩小了我的选择范围,使用以下任一算法来实现它:

  1. 二维正交范围搜索
  2. k-d树结构

现在我取消了第一个选项,因为我的数据是集群的,因此它没有用。

所以我需要使用 k-d 树结构。但是怎么办?我从来没有做过,也不知道从哪里开始。我的一个 Controller 中有一个方法,该方法设置为 stub 来检索此搜索的结果,但搜索本身未实现。

我试图获得创建此功能所涉及的系统步骤。到目前为止,这是我认为我需要做的,但不知道这是否是正确的方法。

  1. 必须根据数据库中的数据在内存中构建 k-d 树。 (但不确定应该在什么时候完成——是在 Rails 启动时还是在收到请求时?)

  2. 当数据发生更新时,编辑树并将整个树保存到数据库中

  3. 是否有任何方法可以在不显式构造的情况下将 k-d 树数据结构保存在数据库中?

另外,我用谷歌搜索了一下,但想知道是否有人可以为此推荐任何资源?

最佳答案

我们在之前的项目中使用了一个 gem:

https://rubygems.org/gems/kdtree

它还有一个线程安全的分支:

https://rubygems.org/gems/tupalo-kdtree

也许在实现您自己的之前先看一下。

关于ruby-on-rails - 在 Rails 中实现 k-d 树 - 需要帮助才能开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9760277/

相关文章:

python - 带有元数据的 scipy kdtree

javascript - 在rails4中调用js内部的配置变量

regex - Ruby - 正则表达式允许 URL 中包含任何非 ASCII 中文字符

ruby-on-rails - 更改 has_and_belongs_to_many 的属性名称

ruby - 如何使用相同的浏览器窗口使用 selenium-webdriver (ruby) 进行自动化测试?

ruby - 在 Ruby 中,使用 Cucumber,我应该模拟对 web 服务的调用吗?

algorithm - 最近的顶点搜索

c++ - 如何使用KDTree进行任意维度的top-k查询和范围查询

ruby-on-rails - 从模型中提取逻辑并将结果保存到数据库的真正好的模式是什么?

javascript - Rails 在同一 Controller 中的操作之间传递值