我正在设置一个简单的多层Rails 3.1设置 - 一个或多个服务器上的Web应用程序,postgresql数据库和远程服务器上的Sphinx搜索索引。
在单服务器设置中,我们使用ThinkingSphinx和delta索引(使用delayed_job),然后使用nightly cron来更新主索引。效果很好。
所以:用户创建可索引的内容; app告诉delayed_job安排更新; delta-indexer为delta-index添加新内容;搜索两者都可以正确解析搜索查询;夜间工作重建单一主要指数。
ThinkingSphinx的文档说here near the bottom
最好的方法是让Sphinx,数据库和延迟的作业处理任务都在一台机器上运行。
但我不清楚如何将延迟作业流程所需的信息发送到要运行的单个服务器。我已经阅读了一些有关共享文件系统的内容(哎 - 真的吗?)。我还没有读过代码,但也许有一个简单的方法?
这是希望!
答案 0 :(得分:4)
延迟的工作人员(在您的DB / Sphinx服务器上运行)在您的Rails应用程序的上下文中引用数据库 - 因此您也需要在DB / Sphinx服务器上使用该应用程序,但只是为了运行DJ工人。
从您的应用服务器的角度来看,TS只会按正常情况将作业记录添加到数据库中。
您还需要设置以下设置 - 这个设置位于config / application.rb的末尾:
ThinkingSphinx.remote_sphinx = Rails.env.production?
将Sphinx版本添加到config / sphinx.yml:
production:
version: 2.0.1-beta