2013-03-06 3 views
5

Der Versuch, Thinking Sphinx für die Suche zu verwenden. Gefolgt this Railscast von Homebrew-Installation TS und MySQL (obwohl ich pg in meiner app bin, ist es offensichtlich erforderlich), und fügte hinzu, diese Zeilen zu meinem gemfile:Thinking Sphinx - Keine Indizes in der Konfigurationsdatei gefunden

gem 'mysql2' 
gem 'thinking-sphinx' 

und die folgenden in meinem Modell setzen, unten alles andere

post.rb

class Post < ActiveRecord::Base 
    #... 

    define_index do 
     indexes content 
     indexes :name 
    end 
end 

Dann gehe ich das Terminal in und versuchen Rake ts: index, aber ich habe diesen Fehler:

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 und nichts gefunden, was dies recht beantwortet. Ich habe versucht, rake ts: configure (die sich nicht beschweren) und dann rake ts: index, aber es funktioniert nicht.

Etwas Hintergrund: Ich habe gerade meine Terminal-Shell geändert (um zsh zu verwenden), was alle möglichen seltsamen, unerwarteten Änderungen hervorrief. Ich musste Bundler neu installieren, dann bündle alle meine Edelsteine ​​neu, dann unabhängig installieren Rake installieren. Dann habe ich das Bundle für das gute Maß aktualisiert. Jetzt scheint Rake zu funktionieren, aber ich bekomme immer noch den Fehler.

Die Config der Fehlerdatei murrt über:

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 
} 

Irgendwelche Ideen, was los ist/welcher Code die Antwort in sein könnte?

INTERESSANTER UPDATE - ich die Q & A folgte auf this Google Group meiner Schienen Konsole eingeben und geben Sie „Post.sphinx_indexes.length“, aber ich habe diese sehr unterschiedliche Fehler zurück. Sieht so aus, als hätte mein Model irgendwie keinen Zugang zu dem Juwel?

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> 

Antwort

5

Auch diese Frage an die Thinking Sphinx Google Group geschrieben und bekam die Antwort dort, also werde ich es unten einfügen. Nachdem ich die obige Frage beantwortet hatte, stieß ich auf einen anderen Fehler und habe ihn dort weiterverfolgt. Wenn jemand mehr Informationen benötigt, sollte die this discussion hoffentlich weiterhin hilfreich sein.

Und ich zitiere:

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

Nach dieser Ausgabe, lief ich in diesen ein, die offenbar war, weil Sphinx keinen Zugriff auf meine PostgreSQL-Datenbank hat.

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 

I fixed dies durch Sphinx und beide gems (thinking_sphinx und mysql2) Deinstallieren dann brauen Sphinx sowohl mit mysql und pgsql flags installieren, dann die Perlen erneut zu installieren.

Danach arbeitete Rake ts: index wie ein Charme.

2

Eine weitere mögliche Fehlerquelle ist die Benennung des Ordners und der Datei. Ein zusätzliches Leerzeichen oder Indizes, die mit einem 'i' buchstabiert sind, werden die Dateien nicht erkennen und somit keinen Index erzeugen.

Dinge, die Yonks zu sehen ...

[und in meinem Fall nicht so selten!]

+0

Dank Jerome ... genau, was ich tat-falsch geschriebenen Indizes. – backwardm

+0

Ein Fall, in dem der Plural, glaube ich, falsch definiert ist. Indizes würden zu weniger Fehlern führen und rails-ish sein. – Jerome

+0

Ich ging mit 'Indizes', weil 'Indizes' ist auch die Aktion der Indizierung (Verarbeitung der Indizes), und ich wollte Verwirrung vermeiden. Daher versuche ich, Indizes als Plural des Index zu verwenden, wo immer es möglich ist. – pat

Verwandte Themen