思考Sphinx不在测试模式下工作

时间:2010-03-11 17:25:09

标签: ruby-on-rails testing sphinx thinking-sphinx

我正在努力让Thinking Sphinx在Rails中以测试模式工作。基本上这个:

ThinkingSphinx::Test.init
ThinkingSphinx::Test.start

冻结,永远不会回来。

我的测试和开发配置与测试和开发相同:

dry_setting: &dry_setting
  adapter: mysql
  host: localhost
  encoding: utf8
  username: rails
  password: blahblah

development:
  <<: *dry_setting
  database: proj_devel
  socket: /tmp/mysql.sock  # sphinx requires it

test:
  <<: *dry_setting
  database: proj_test
  socket: /tmp/mysql.sock  # sphinx requires it

和sphinx.yml

development:
  enable_star: 1
  min_infix_len: 2
  bin_path: /opt/local/bin

test:
  enable_star: 1
  min_infix_len: 2
  bin_path: /opt/local/bin

production:
  enable_star: 1
  min_infix_len: 2

生成的配置文件config / development.sphinx.conf和config / test.sphinx.conf仅在数据库名称,目录和类似内容方面有所不同;没什么功能。

为devel生成索引没有问题

$ rake ts:in
(in /Users/pupeno/proj)
default config
Generating Configuration to /Users/pupeno/proj/config/development.sphinx.conf
Sphinx 0.9.8.1-release (r1533)
Copyright (c) 2001-2008, Andrew Aksyonoff

using config file '/Users/pupeno/proj/config/development.sphinx.conf'...
indexing index 'user_core'...
collected 7 docs, 0.0 MB
collected 0 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.0 Mhits, 99.8% done
total 7 docs, 422 bytes
total 0.098 sec, 4320.80 bytes/sec, 71.67 docs/sec
indexing index 'user_delta'...
collected 0 docs, 0.0 MB
collected 0 attr values
sorted 0.0 Mvalues, nan% done
total 0 docs, 0 bytes
total 0.010 sec, 0.00 bytes/sec, 0.00 docs/sec
distributed index 'user' can not be directly indexed; skipping.

但是当我尝试进行测试时,它会冻结:

$ RAILS_ENV=test rake ts:in
(in /Users/pupeno/proj)
DEPRECATION WARNING: require "activeresource" is deprecated and will be removed in Rails 3. Use require "active_resource" instead.. (called from /Users/pupeno/.rvm/gems/ruby-1.8.7-p249/gems/activeresource-2.3.5/lib/activeresource.rb:2)
default config
Generating Configuration to /Users/pupeno/proj/config/test.sphinx.conf
Sphinx 0.9.8.1-release (r1533)
Copyright (c) 2001-2008, Andrew Aksyonoff

using config file '/Users/pupeno/proj/config/test.sphinx.conf'...
indexing index 'user_core'...

它已经存在超过10分钟,用户表有4条记录。

数据库目录看起来非常不同,但我不知道该怎么做:

$ ls -l db/sphinx/development/
total 96
-rw-r--r--  1 pupeno  staff   196 Mar 11 18:10 user_core.spa
-rw-r--r--  1 pupeno  staff  4982 Mar 11 18:10 user_core.spd
-rw-r--r--  1 pupeno  staff   417 Mar 11 18:10 user_core.sph
-rw-r--r--  1 pupeno  staff  3067 Mar 11 18:10 user_core.spi
-rw-r--r--  1 pupeno  staff    84 Mar 11 18:10 user_core.spm
-rw-r--r--  1 pupeno  staff  6832 Mar 11 18:10 user_core.spp
-rw-r--r--  1 pupeno  staff     0 Mar 11 18:10 user_delta.spa
-rw-r--r--  1 pupeno  staff     1 Mar 11 18:10 user_delta.spd
-rw-r--r--  1 pupeno  staff   417 Mar 11 18:10 user_delta.sph
-rw-r--r--  1 pupeno  staff     1 Mar 11 18:10 user_delta.spi
-rw-r--r--  1 pupeno  staff     0 Mar 11 18:10 user_delta.spm
-rw-r--r--  1 pupeno  staff     1 Mar 11 18:10 user_delta.spp

$ ls -l db/sphinx/test/       
total 0
-rw-r--r--  1 pupeno  staff  0 Mar 11 18:11 user_core.spl
-rw-r--r--  1 pupeno  staff  0 Mar 11 18:11 user_core.tmp0
-rw-r--r--  1 pupeno  staff  0 Mar 11 18:11 user_core.tmp1
-rw-r--r--  1 pupeno  staff  0 Mar 11 18:11 user_core.tmp2
-rw-r--r--  1 pupeno  staff  0 Mar 11 18:11 user_core.tmp7

发生这种情况时,不会将任何内容添加到日志中。任何想法从哪里开始?

我可以手动运行命令行:

/opt/local/bin/indexer --config config/test.sphinx.conf --all

生成输出为rake ts:in,所以没有帮助。

1 个答案:

答案 0 :(得分:2)

问题是灯具产生的随机ID。该解决方案在http://freelancing-god.github.com/ts/en/common_issues.html#slow_indexing

中描述
  

慢速索引

     

如果斯芬克斯正在服用   在处理所有记录时,   有几个常见的原因   这发生了。首先,请确保你   有任何外国的数据库索引   键列和您筛选的任何列   或排序。

     

其次 - 你在使用灯具吗?   Rails的固定装置是随机的   生成的ID,通常是   非常大的整数和狮身人面像   未设置为处理不同的ID   默认有效。到处走走   这个,你需要设置   你的sql_range_step   config / sphinx.yml文件   适当的环境:

development:
  sql_range_step: 10000000

我将它添加到开发和测试环境中。

相关问题