Ruby on Rails应用程序中搜索结果页面上的Sphinx连接错误

时间:2014-11-27 18:37:49

标签: ruby-on-rails ruby postgresql sphinx thinking-sphinx

我有一个带Posgresql的RoR应用程序作为数据库。我正在尝试使用Sphinx作为搜索引擎和Thinking Sphinx gem来设置搜索功能。我已经安装了sphinx和mysql以及postgresql支持,认为sphinx v3 gem和它的依赖。

命令

  

rake ts:index

执行没有错误。 Log说我有20个索引的文档(我的Post模型的所有记录)。 然后我尝试为搜索结果页面创建控制器和视图。这是Controller的搜索操作

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

当我尝试在搜索视图中使用@posts变量时

  

本地主机:3000 /搜索Q =你好

我有以下错误。

  

主#搜索中的ThinkingSphinx :: ConnectionError

     

通过MySQL协议连接到Sphinx时出错。通过MySQL协议连接到Sphinx时出错。无法连接到'127.0.0.1'上的MySQL服务器(61) - SELECT * FROM post_core WHERE MATCH('hello')AND sphinx_deleted = 0 LIMIT 0,20; SHOW META

3 个答案:

答案 0 :(得分:5)

ts:index任务只存储Sphinx数据,它不会启动响应搜索请求的守护进程。为此,您需要运行ts:start rake任务。

另外:ts:rebuild同时完成所有这些:停止Sphinx(如果它正在运行),索引数据,启动Sphinx。

答案 1 :(得分:1)

思考Sphinx将mysql用于其内部目的,您必须将mysql2 gem添加到您的堆栈中,例如:

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

答案 2 :(得分:0)

我陷入困境并面临同样的错误,最后我发现我没有安装" Sphinx"使用此命令在我的本地系统上

sudo apt-get update
sudo apt-get install sphinxsearch

有关安装的更多详细信息,请点击此处

  

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-sphinx-on-ubuntu-14-04

确保你也应该安装" mysql-server"在您的系统上创建连接。

我看了@ blelump的回答是我的第二步。您也应该包含这些宝石,以便与sphinx一起运行。

然后转到@pat的回答是我的最后一步,当您安装sphinx它将启动服务但您需要停止服务运行,

rake ts:index
rake ts:rebuild

这里使用SPHINX。