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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top