2013-03-06 6 views
5

Essayez d'utiliser Thinking Sphinx pour la recherche. Suivi this Railscast en installant homebrew TS et MySQL (bien que j'utilise pg dans mon application, il est apparemment nécessaire), l'ajout de ces lignes à mon Gemfile:Sphinx pensant - aucun index trouvé dans le fichier de configuration

gem 'mysql2' 
gem 'thinking-sphinx' 

et mettre ce qui suit dans mon modèle, ci-dessous tout le reste

post.rb

class Post < ActiveRecord::Base 
    #... 

    define_index do 
     indexes content 
     indexes :name 
    end 
end 

Puis je vais dans le terminal et essayer râteau ts: index, mais je reçois cette erreur:

using config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'... 
    FATAL: no indexes found in config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf' 

Fishedaroundon the internet et rien trouvé qui a répondu à cette question. J'ai essayé d'exécuter rake ts: configure (qui ne se plaint pas), puis rake ts: index, mais cela ne fonctionne pas. Un peu d'arrière-plan: Je viens de changer mon shell de terminal (pour utiliser zsh), ce qui a fait toutes sortes de changements inattendus étranges. J'ai dû réinstaller bundler, puis ré-bundle installer tous mes gemmes, puis gem installer rake indépendamment. Ensuite, je bundle mis à jour pour une bonne mesure. Maintenant rake semble fonctionner, mais j'ai toujours l'erreur.

Le fichier config l'erreur gronde sur:

indexer 
{ 
} 

searchd 
{ 
    listen = 127.0.0.1:9306:mysql41 
    log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.log 
    query_log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.query.log 
    pid_file = /Users/<personal>/rails_projects/<personal>/log/development.sphinx.pid 
    workers = threads 
    binlog_path = /Users/<personal>/rails_projects/<personal>/tmp/binlog/development 
} 

Toutes les idées ce qui se passe/ce code, la réponse pourrait être?

Intéressante mise à jour - J'ai suivi le Q & A sur this Google Group pour entrer dans ma console de rails et tapez « Post.sphinx_indexes.length », mais je suis arrivé cette erreur très différente en retour. On dirait que mon modèle n'a pas accès à la gemme?

NoMethodError: undefined method `define_index' for #<Class:0x007f9c06c611b0> 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/dynamic_matchers.rb:55:in `method_missing' 
     from /Users/<personal>/rails_projects/<personal>/app/models/post.rb:55:in `<class:Post>' 
     from /Users/<personal>/rails_projects/<personal>/app/models/post.rb:13:in `<top (required)>' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:469:in `load' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:469:in `block in load_file' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:639:in `new_constants_in' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:468:in `load_file' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:353:in `require_or_load' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:502:in `load_missing_constant' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:192:in `block in const_missing' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:190:in `each' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:190:in `const_missing' 
     from (irb):1 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>'irb(main):002:0> 

Répondre

5

J'ai également posté cette question au groupe Google Thinking Sphinx et j'ai obtenu la réponse, je vais donc la coller ci-dessous. Après avoir répondu à la question ci-dessus, j'ai rencontré une autre erreur et j'ai suivi là-dessus, donc si quelqu'un veut plus d'informations, this discussion devrait continuer à être utile.

Et je cite:

Hi Sasha The issue is that Thinking Sphinx's documentation is mostly for v2, but v3 is what you're using (and much better). Index definitions are now located in app/indices - the README is your best source of information (but anything it doesn't cover is probably the same as earlier versions): https://github.com/pat/thinking-sphinx/blob/master/README.textile

Have a read through of that, move your index definition, and you should be good to go. Any further issues, get in touch :)

-- Pat

Après cette question, je suis tombé sur celui-ci, qui était apparemment parce que Sphinx n'a pas accès à ma base de données PostgreSQL.

indexing index 'post_core'... 
ERROR: source 'post_core_0': unknown type 'pgsql'; skipping. 
ERROR: index 'post_core': failed to configure some of the sources, will not index. 
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg 
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg 

Je fixe ce en désinstallant Sphinx et les pierres précieuses (thinking_sphinx et mysql2), puis brasser l'installation Sphinx avec les deux drapeaux de MySQL et pgsql, puis de réinstaller les pierres précieuses. Ensuite, rake ts: index a fonctionné comme un charme.

2

Une autre source d'erreur est la dénomination du dossier et du fichier. Un espace supplémentaire, ou des mots épelés avec un 'i' ne reconnaîtra pas les fichiers et ne générera donc aucun index.

Les choses qui prennent yonks à voir ...

[et dans mon cas, il arrive pas si rarement!]

+0

Merci Jérôme ... exactement ce que j'ai fait-mal orthographié indices. – backwardm

+0

Un cas où le pluriel est, je crois, mal défini. Les index conduiraient à moins d'erreurs et seraient rails-ish. – Jerome

+0

Je suis allé avec 'indices' parce que 'index' est aussi l'action de l'indexation (traitement des indices), et je voulais éviter toute confusion. Par conséquent, j'essaie d'utiliser des indices comme le pluriel de l'index chaque fois que possible. – pat

Questions connexes