Come cercare un albero con Sunspot & Solr
-
28-10-2019 - |
Domanda
Ho un modello che assomiglia a questo
class Post
acts_as_tree
end
Quello che voglio fare è condurre una ricerca sul contenuto di un intero thread di post, ma restituisce solo il post del genitore nei risultati e pagina questi risultati.
Ho letto delle sfaccettature in Sunspot/Solr e, sebbene ciò restituisca i risultati corretti, non possono essere paginati.
Fondamentalmente, voglio cercare un set di post, ma raggruppati parent_id
. È possibile in Sunspot/Solr?
Soluzione
Fondamentalmente vuoi cercare su un campo composto da tutti i nodi figlio di un thread. Puoi farlo con la sintassi del blocco di Sunspot. Se il post è un nodo radice, indicizzare tutti i figli del nodo (dovrai implementare All_Children, il che non dovrebbe essere troppo difficile).
searchable do
text :posts do
all_children.map(&:post_body) unless parent
end
end
Quindi cerca su questo campo di testo "post". Dato che hai indicizzato solo qualsiasi cosa per i nodi di root, questi sono gli unici oggetti che verranno restituiti nel set di risultati.