É ruby ??on rails plugin, acts_as_ferret, muito buggy?
-
09-09-2019 - |
Pergunta
Estou fazendo uma pesquisa muito simples no meu DB usando acts_as_ferret. Eu coloquei isso no meu modelo "local":
acts_as_ferret :fields => [:name, :city]
E este é, na minha ação de pesquisa controlador:
@t = Venue.find_by_contents(params[:search]+'~')
e então eu apenas tornar os resultados.
render :text => @t.to_json, :success => true, :status => :ok
Se eu executar um teste rápido:
http://localhost:3000/venue/list?search=The
Eu vejo no meu log que a consulta adequada "A ~" está sendo executado no índice. No entanto, eu não obter nenhum resultado. Eu definitivamente tenho algumas "Locais", com a palavra "O" no campo de nome.
Uma vez que esta é uma busca muito simples e acts_as_ferret é usado um pouco, tentei reconstruir o índice para ver se ele foi corrompido .... nenhum dado
Todas as idéias?
Obrigado!
Solução
Sim, Ferret tem sido muito bem conhecida por corromper índices.
Eu recomendo mudar para outro plugin de busca como Thinking Sphinx . Você pode assistir ao Railscast sobre isso , a fim de aprender mais.
Outras dicas
Eu acho que o problema pode ser que "a" é definido como um stopword- uma palavra muito comum que não é indexado porque seria apenas retornar todos os documentos. Você pode configurar sua lista de palavras de parada.
eu consideraria usando Solr se você está tendo problemas com Ferret.