思考Sphinx min_inflex_len和delta无法在生产服务器上运行

时间:2011-08-31 10:55:52

标签: ruby-on-rails thinking-sphinx

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

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

我们正在部署ubuntu用户,它也运行apache。昨天我们遇到了一个问题,生产文件夹没有被创建,但是我们手动创建了,我现在可以在那里看到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

重建,启动和配合工作正常,我的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 env文件中也有这个:

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

2 个答案:

答案 0 :(得分: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; ''

答案 1 :(得分:0)

`` 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;