Pesquisa de texto completo em Ruby com picky

Ei pessoal,

Acabei de migrar meu mecanismo de busca de webapp de ônibus e bondes para o Picky , uma joia maravilhosa que descobri que torna o texto completo REALMENTE fácil.

Primeiro passo, adicione pickyao seu Gemfile.

Em seguida, atualize o modelo:

class Stop < ActiveRecord::Base
after_save
:reindex

def reindex
StopIndex.replace self
end

def self.search s
ids
= (StopSearch.search s).ids
where "id in (?) and enabled is true", ids
end

end

E finalmente, adicione um inicializador config/initializers/picky.rb

if Stop.table_exists? then
StopIndex = Picky::Index.new :stops do
source
Stop.all

# This will add all attributes to the index.
Stop.attribute_names[1..-1].each do |cname|
category cname
.to_sym
end
end

StopSearch = Picky::Search.new StopIndex

begin
# Try to load the index from cache.
StopIndex.load
rescue
# Index on first boot or on database changes.
StopIndex.index
end

# Save the index program exit.
at_exit
{ StopIndex.dump }
end