Как искать дерево с солнечным пятном и соль - PullRequest
1 голос
/ 02 мая 2011

У меня есть модель, которая выглядит примерно так

class Post
  acts_as_tree
end

Что я хочу сделать, это провести поиск по содержимому всей цепочки сообщений, но вернуть только родительский пост в результатах,и разбить эти результаты на страницы.

Я читал о гранях в sunspot / solr, и хотя это возвращает правильные результаты, они не могут быть разбиты на страницы.

По сути, я хочу найти набор сообщений, но сгруппировать их по parent_id.Возможно ли это в солнечном пятне / солре?

1 Ответ

2 голосов
/ 02 мая 2011

В основном вы хотите выполнить поиск по полю, которое состоит из всех дочерних узлов потока. Вы можете сделать это с помощью блочного синтаксиса sunspot. Если сообщение является корневым узлом, проиндексируйте все дочерние узлы (вам нужно реализовать all_children, что не должно быть слишком сложно).

searchable do
  text :posts do
    all_children.map(&:post_body) unless parent
  end
end

Затем выполните поиск по этому текстовому полю "posts". Поскольку вы только что проиндексировали все для корневых узлов, это единственные объекты, которые будут возвращены в вашем наборе результатов.

...