Cómo buscar en un árbol con Sunspot & Solr
-
28-10-2019 - |
Pregunta
Tengo un modelo que se parece a esto
class Post
acts_as_tree
end
Lo que quiero hacer es realizar una búsqueda sobre el contenido de un hilo completo de publicaciones, pero solo devolver la publicación principal en los resultados y paginar estos resultados.
He leído sobre facetas en Sunspot/Solr, y aunque esto devuelve los resultados correctos, no se pueden paginar.
Básicamente, quiero buscar en un conjunto de publicaciones, pero agrupar por su parent_id
. ¿Es esto posible en Sunspot/Solr?
Solución
Básicamente, desea buscar en un campo compuesto por todos los nodos infantiles de un hilo. Puede hacer esto con la sintaxis de bloque de Sunspot. Si la publicación es un nodo raíz, indexe a todos los niños del nodo (tendrá que implementar All_children, lo que no debería ser demasiado difícil).
searchable do
text :posts do
all_children.map(&:post_body) unless parent
end
end
Luego busque este campo de texto "publicar". Dado que solo indexó cualquier cosa para los nodos raíz, estos son los únicos objetos que se devolverán en su conjunto de resultados.