2010-03-11 5 views
2

J'essaie de faire en sorte que Thinking Sphinx fonctionne en mode test dans Rails. Fondamentalement ceci:Penser que Sphinx ne fonctionne pas en mode test

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

se bloque et ne revient jamais.

Mon test et la configuration devel est le même pour le test et devel:

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 

et 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 

Les fichiers de configuration générés, config/development.sphinx.conf et config/test.sphinx.conf ne diffèrent que par les noms de bases de données, les répertoires et les choses similaires; rien de fonctionnel.

génération de l'index pour devel va sans problème

$ 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. 

mais lorsque je tente de le faire pour le test il gèle:

$ 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'... 

Il a été là pendant plus de 10 minutes, l'utilisateur la table a 4 enregistrements.

Le répertoire de base de données semblent assez diferently, mais je ne sais pas quoi faire de celui-ci:

$ 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 

Rien est ajouté à un journal lorsque cela se produit. Des idées d'où partir?

je peux exécuter la ligne de commande manuellement:

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

qui génère la sortie que le râteau ts: dans, donc aucune aide là.

+0

utilisez-vous des appareils? –

+0

Oui. J'utilise des appareils. – Pablo

Répondre

2

Le problème était les identifiants aléatoires générés par les appareils. La solution est décrite sur http://freelancing-god.github.com/ts/en/common_issues.html#slow_indexing

lente indexation

Si Sphinx prend un certain temps pour traiter tous vos dossiers, il y a quelques raisons communes pour ce qui se passe. Tout d'abord, assurez-vous que vous avez des index de base de données sur toutes les colonnes clés étrangères et toutes les colonnes que vous filtrez ou trier par.

Deuxièmement - utilisez-vous des appareils? Les appareils Rails ont des ID générés au hasard , qui sont généralement extrêmement grands entiers, et Sphinx n'est pas configuré pour traiter efficacement les ID disparates par défaut. Pour contourner cela, vous aurez besoin de mettre sql_range_step dans votre fichier config/sphinx.yml pour les environnements appropriés :

development: 
    sql_range_step: 10000000 

je l'ai ajouté à la fois, des environnements de développement et de test.

Questions connexes