Реализация дерева kd в Rails - нужна помощь, чтобы начать - PullRequest
3 голосов
/ 18 марта 2012

Мне нужно сделать запрос к моей БД на основе диапазона двух значений, которые по сути являются двумя столбцами типа float в моей базе данных.

После некоторых исследований я сузил свои варианты реализации этого с помощью алгоритмаиспользуя:

  1. 2D Поиск по ортогональному диапазону
  2. древовидная структура kd

Теперь я исключил 1-й вариант, потому что мои данные кластеризованы и, следовательно, он выиграл 'быть полезным.

Так что мне нужно использовать древовидную структуру kd.Но как?Я никогда этого не делал и не знаю с чего начать.У меня есть метод в одном из моих контроллеров, который настроен как заглушка для получения результата этого поиска, но сам поиск не реализован.

Я пытаюсь получить систематические шаги, связанные с созданием этой функциональности.До сих пор это то, что я думал, что мне нужно будет сделать, но не имею понятия, если это правильный путь.

  1. Дерево KD должно быть построено в памяти из данных вБД.(Но не уверен, когда это должно быть сделано - либо при запуске rails, либо при поступлении запроса?)

  2. Когда происходит обновление данных, отредактируйте дерево и сохраните вседерево в базу данных

  3. Есть ли способ сохранить структуру данных дерева kd в самой БД, не создавая ее явно?

Кроме того, я погуглил, но мне интересно, есть ли у кого-нибудь ресурсы, которые он мог бы порекомендовать для этого?

1 Ответ

3 голосов
/ 18 марта 2012

Есть драгоценный камень, который мы использовали в предыдущем проекте:

https://rubygems.org/gems/kdtree

Есть также поточно-ориентированная вилка:

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

Может быть, посмотрите на это, прежде чем внедрять свои собственные.

...