【问题标题】:Thinking Sphinx min_inflex_len and delta not working on production server思考 Sphinx min_inflex_len 和 delta 在生产服务器上不起作用
【发布时间】:2011-08-31 10:55:52
【问题描述】:

我们的生产服务器上的 TS min_inflex_len 和 delta 索引存在问题

我在 OSX 上的所有东西都在开发模式下工作,但是当我们通过 capistrano 部署到运行乘客 / apache 的 Ubuntu 服务器时,增量索引和 min_inflex_len 似乎都停止了

我们正在以同样运行 apache 的 ubuntu 用户身份进行部署。昨天我们遇到了一个问题,没有创建生产文件夹,但我们手动创建了,我现在可以看到其中的 delta 文件列表。

我已经按照文档进行了..

我可以看到创建记录时 delta 标志设置为 true,但是在搜索时找不到记录。一旦我们重建索引(作为 ubuntu 用户),我可以找到记录,但只能找到完整的字符串。

我的 sphinx.conf 文件如下:

production:
    enable_star: 1
    min_infix_len: 3
    bin_path: "/usr/local/bin"
    version: 2.0.5
    mem_limit: 128M
    searchd_log_file: "/var/log/searchd.log"

development:
    min_infix_len: 3
    bin_path: "/usr/local/bin"
    version: 2.0.5
    mem_limit: 128M

重建、启动和 conf 工作正常,我的 production.conf 文件包含以下内容:

index company_core
{
  source = company_core_0
  path = /var/www/html/ordering-main/releases/20110831095808/db/sphinx/production/company_core
  charset_type = utf-8
  min_infix_len = 1
  enable_star = 1
}

我的 production.rb 环境文件中也有这个:

ThinkingSphinx.deltas_enabled = true 
ThinkingSphinx.updates_enabled = true

我的 searchd.log 文件只有这个:

[Wed Aug 31 09:40:04.437 2011] [ 5485] accepting connections

apache 错误/访问日志中根本没有出现

-- 编辑 ---

 define_index do
        indexes :name
        has created_at, updated_at
        set_property :delta => true
    end

【问题讨论】:

  • 嗨,Jenny - 你可以为你的 Company 模型添加 define_index 块吗?
  • 当然,已经更新了我的问题。干杯

标签: ruby-on-rails thinking-sphinx


【解决方案1】:

不确定是否是原因,但 sphinx.yml 中的版本值适用于 Sphinx 的版本,而不是 Thinking Sphinx - 所以您可能需要运行 indexer 来仔细检查该值应该是什么(可能0.9.9、1.10-beta 或 2.0.1-beta 之一)。

另外:在服务器上,script/console production,你能分享以下的完整输出吗(对返回的值不感兴趣,因此我强制它为空字符串 - 它只会进入否则方式):

Company.define_indexes && Company.index_delta; ''

【讨论】:

  • 您好,感谢您的回复。我已经更改了版本,稍后将重建。但是运行该命令会引发一个错误,我认为这很好。在开发服务器的路径中寻找 company_delta.tmp.spl 的服务。我怎样才能改变它??
  • 经过进一步调查,我可以看到我当前文件夹中的 /db/sphinx/ 仅包含开发。不知道为什么它不在生产模式下创建文件夹..
  • 你是如何运行 TS rake 任务的?
  • 嗨,帕特。作为 ubuntu 用户(拥有网络)。尽管 min_inflex 还没有工作,但情况看起来好多了。我在我的开发服务器上创建了文件夹生产,但由于某种原因它没有上传。我放了一个空白文件,现在它发送...
  • 所以 deltas 工作但中缀不工作?您用来测试后者的查询是什么?
【解决方案2】:

`` delta 不适用于乘客用户的生产服务器,您必须在创建索引时向乘客用户授予写入权限并将其写入 db/sphinx/production 文件夹。

或者你可以在你的 nginx/conf/nginx.conf 中设置两行

  passenger_user_switching off;   
  passenger_default_user root;

例子:

passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.0;
passenger_ruby /usr/local/bin/ruby;
passenger_user_switching off;
passenger_default_user root;

【讨论】:

  • 我建议不要使用 root 作为默认用户 - 从安全角度来看,这根本不是明智之举。
  • 感谢 pat,但在写入我的 db/sphinx/production 文件夹时,它显示没有人也没有组。因此,没有索引正在更新。我将如何解决这个问题。
  • Passenger 默认使用您的应用文件的所有者 - 并且该用户也应该调用 TS rake 任务。那么也许可以修复 Rails 应用文件的所有权?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2020-05-20
  • 2014-06-15
  • 1970-01-01
相关资源
最近更新 更多