我正在建立一个简单的多层 Rails 3.1 设置——一个或多个服务器上的 Web 应用程序、postgresql 数据库和我们在远程服务器上的 Sphinx 搜索索引。
在单服务器设置中,我们使用 ThinkingSphinx 和增量索引(使用 delay_job),然后每晚使用 cron 更新主索引。效果很好。
所以:用户创建可索引的内容;应用程序告诉 delay_job 安排更新; delta-indexer 向 delta-index 添加新内容;搜索同时查看两者以正确解析搜索查询;每晚工作重新创建单个主索引。
ThinkingSphinx 的文档说 here near the bottom
The best approach is to have Sphinx, the database and the delayed job processing task all running on one machine.
但是我不清楚如何将延迟作业过程所需的信息发送到要运行的单个服务器。我已经阅读了一些关于拥有共享文件系统的内容(哎呀——真的吗?)。我还没有阅读代码,但也许有一个简单的方法?
这里是希望!
最佳答案
延迟作业工作器(在您的 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
关于ruby-on-rails-3 - 具有增量索引的远程数据库服务器上的 ThnkingSphinx (sphinxd)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8422484/