我有一个带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')ANDsphinx_deleted
= 0 LIMIT 0,20; SHOW META
答案 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。