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

时间:2012-03-18 17:01:02

标签: ruby-on-rails ruby kdtree

我需要根据一系列两个值来查询我的数据库,这两个值基本上是我的数据库中两个float类型的列。

在做了一些研究之后,我使用以下任一方法缩小了使用算法实现此选项的选项:

  1. 2D正交范围搜索
  2. k-d树形结构
  3. 现在我删除了第一个选项,因为我的数据是聚集的,因此它没有用处。

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

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

    1. 必须根据数据库中的数据在内存中构建k-d树。 (但不确定何时应该这样做 - 无论是在铁轨启动时还是在请求进入时?)

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

    3. 有没有办法在数据库本身保存k-d树数据结构而不用明确地构建它?

    4. 另外,我已经四处搜索,但想知道是否有人可以为此推荐任何资源?

1 个答案:

答案 0 :(得分:3)

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

https://rubygems.org/gems/kdtree

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

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

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