我们的生产服务器上存在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
答案 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;