Comment chercher un arbre avec des taches solaires et solr
-
28-10-2019 - |
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?
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.