Question

J'ai un modèle qui ressemble à quelque chose comme ceci

class Post
  acts_as_tree
end

Ce que je veux faire est de mener une recherche sur le contenu d'un fil de messages entier, mais seulement retourner le poste parent dans les résultats, et paginate ces résultats.

J'ai lu dans les facettes des taches solaires / Solr, et bien que cela ne renvoie les résultats corrects, ils ne peuvent pas être paginé.

En fait, je veux rechercher un ensemble de messages, mais par leur groupe parent_id. Est-ce possible dans sunspot / Solr?

Était-ce utile?

La solution

Vous voulez essentiellement à la recherche sur un champ qui est composé de tous les nœuds enfants d'un fil. Vous pouvez le faire avec la syntaxe du bloc de taches solaires. Si le poste est un nœud racine, index tous les enfants du nœud (vous devrez mettre en œuvre all_children, qui ne devrait pas être trop dur).

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

Ensuite, la recherche sur ce champ de texte « messages ». Puisque vous ne rien indexé pour les noeuds de racine, ce sont les seuls objets qui seront retournés dans le jeu de résultats.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top