2014-11-27 5 views
3

У меня есть приложение RoR с базой данных Posgresql. Я пытаюсь настроить функцию поиска, используя Sphinx в качестве поисковой системы и драгоценный камень Thinking Sphinx. Я установил sphinx с поддержкой mysql и postgresql, думая о sphinx v3 gem и его зависимостях.Ошибка соединения Sphinx на странице результатов поиска в приложении Ruby on Rails

Команда

рейка TS: индекс

выполняет без ошибок. Журнал говорит, что у меня индексировано 20 документов (все мои записи модели Post). Затем я попытался создать контроллер и просмотреть страницу результатов поиска. Вот розыскное мероприятие Контролера

def search 
    @query = Riddle::Query.escape(params[:q]) 
    @posts = Post.search(@query) 
end 

И когда я пытаюсь использовать @posts переменную в целях поиска

локальный: 3000/поиск д = привет

Я следующее сообщение об ошибке.

ThinkingSphinx :: ConnectionError в главном # поиска

Ошибка подключения к Sphinx по протоколу MySQL. Ошибка подключения к Sphinx через протокол MySQL. Не удается подключиться к серверу MySQL на «127.0.0.1» (61) - SELECT * FROM post_core WHERE MATCH ('hello') AND sphinx_deleted = 0 LIMIT 0, 20; ШОУ META

ответ

1

Thinking Sphinx использует MySQL для своих внутренних целей, и вы должны добавить mysql2 камень в свой стек, например:

gem 'mysql2', '~> 0.3.13' 
gem 'thinking-sphinx', '~> 3.1.1' 
5

ts:index задача просто хранит данные Сфинкса, он не запускается который отвечает на запросы поиска. Вам нужно запустить ts:start rake task, чтобы это произошло.

Также: ts:rebuild выполняет все это сразу: останавливает Sphinx (если он работает), индексирует данные, запускает Sphinx.

+0

вы спасли мой день спасибо. –