Вопрос

Я выполняю очень простой поиск в своей БД, используя act_as_ferret.Я поместил это в свою модель «Место проведения»:

acts_as_ferret :fields => [:name, :city]

И это в моем действии поиска контроллера:

@t = Venue.find_by_contents(params[:search]+'~')

а затем я просто визуализирую результаты.

render :text => @t.to_json, :success => true, :status => :ok

Если я проведу быстрый тест:

http://localhost:3000/venue/list?search=The

В своем журнале я вижу, что к индексу выполняется правильный запрос «The~».Однако я не получаю никаких результатов.У меня определенно есть несколько «Площадок» со словом «The» в поле названия.

Поскольку это очень простой поиск и довольно часто используется act_as_ferret, я попытался перестроить индекс, чтобы проверить, не поврежден ли он....никаких шансов

Есть идеи?

Спасибо!

Это было полезно?

Решение

Да, Ferret был очень известен своими повреждениями индексов.

Я рекомендую переключиться на другой поисковый плагин, например Думающий Сфинкс.Ты можешь посмотри Railscast об этом чтобы узнать больше.

Другие советы

Я думаю, проблема может заключаться в том, что «the» определяется как стоп-слово — чрезвычайно распространенное слово, которое не индексируется, потому что оно просто возвращает каждый документ.Вы можете настроить список стоп-слов.

Я бы рассмотрел возможность использования Solr, если у вас проблемы с Ferret.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top