Na verdade um port para código nativo da ferramenta Apache Lucene, o Ferret é uma engine de texto ("full text search") rápida e com suporte a uma sintaxe bastante rica de indexação e busca. O suporte a Rails (através do plugin acts_as_ferret) é tão simples que dá até medo: vamos supor um sistema hipotético de (surpresa!) blogging. Depois de longos 5 minutos de desenvolvimento, eu já tenho meu modelo de Post:
class Post < ActiveRecords::Base
attr_accessor :text, :user, :title, :creation_date
end
Para utilizar o Ferret, é preciso primeiramente instalar o gem da engine:
gem install ferret
Após concluído o processo de instalação, precisamos também do plugin, em nosso projeto:
ruby script/plugin install svn://projects.jkraemer.net/acts_as_ferret/tags/stable/acts_as_ferret
Muito bom, muito bonito. Agora vamos à difícil tarefa de implementar o suporte a busca full text nos meus posts. Que rufem os tambores...
class Post < ActiveRecords::Base
acts_as_ferret
attr_accessor :text, :user, :title, :creation_date
end
E-pronto. Sempre que precisar fazer uma busca utilizando texto em qualquer dos campos do Post, basta utilizar-se o método find_by_contents(), definido pelo acts_as_ferret:
def buscar_comida
comida = Post.find_by_contents("torta OR bolo OR bigmac OR pizza")
end
A sintaxe utilizada para as buscas é a mesma do Lucene, que permite utilizar agrupamentos lógicos de palavras, busca por proximidade, similaridade...
Tão fácil que deu até medo.
Assinar:
Postar comentários (Atom)
3 comentários:
Simples rápido e direto ao ponto! :D Posta mais! Posta mais!
Gostei da dica!
Phoda!
I became so numb with Ruby...
Forte abraço,
Postar um comentário