5

ThinkingSphinxを検索に使用しようとしています。このRailscastに続いて、TSとMySQLを自作でインストールし(アプリでpgを使用していますが、明らかに必要です)、これらの行をgemfileに追加します。

gem 'mysql2'
gem 'thinking-sphinx'

そして、他のすべての下に、私のモデルに以下を入れます

post.rb

class Post < ActiveRecord::Base
    #...

    define_index do 
      indexes content
      indexes :name
    end
end

次に、ターミナルに移動してrake ts:indexを試しますが、次のエラーが発生します。

 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'

インターネットで釣り して、これに完全に答えるものは何も見つかりませんでした。rake ts:configure(文句を言わない)を実行してから、rake ts:indexを実行しようとしましたが、機能しません。

いくつかの背景:ターミナルシェルを(zshを使用するために)変更したところ、あらゆる種類の奇妙な予期しない変更が行われました。私はbundlerを再インストールし、次にすべてのgemを再バンドルインストールしてから、独立してgeminstallrakeを実行する必要がありました。それから私は良い測定のために更新されたバンドルをバンドルします。rakeは機能しているようですが、それでもエラーが発生します。

エラーが不平を言っている設定ファイル:

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
}

何が起こっているのか/答えはどのコードにあるのでしょうか?

興味深い更新-このGoogleグループのQ&Aに従って、Railsコンソールに入り、「Post.sphinx_indexes.length」と入力しましたが、この非常に異なるエラーが返されました。私のモデルはどういうわけか宝石にアクセスできないように見えますか?

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> 
4

2 に答える 2

5

また、この質問をThinking Sphinx Google Groupに投稿して回答を得たので、以下に貼り付けます。上記の質問に答えた後、私は別のエラーに遭遇し、そこでフォローアップしました。したがって、誰かがより多くの情報を必要とする場合、この議論が引き続き役立つことを願っています。

そして私は引用します:

こんにちはサーシャ問題は、Thinking Sphinxのドキュメントは主にv2用ですが、v3はあなたが使用しているものです(そしてはるかに優れています)。インデックス定義はapp/indexsにあります-READMEはあなたの最良の情報源です(しかし、それがカバーしていないものはおそらく以前のバージョンと同じです): https ://github.com/pat/thinking-sphinx/blob /master/README.textile

それを読み通して、インデックス定義を移動してください。そうすれば、うまくいくはずです。それ以上の問題がある場合は、連絡してください:)

-パット

その問題の後、私はこれに遭遇しました。これは明らかに、Sphinxが私の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

これを修正するには、Sphinxと両方のgem(thinking_sphinxとmysql2)をアンインストールしてから、mysqlフラグとpgsqlフラグの両方を使用してSphinxをインストールし、gemを再インストールします。

その後、rake ts:indexは魅力のように機能しました。

于 2013-03-07T07:51:50.603 に答える
3

エラーのもう1つの考えられる原因は、フォルダーとファイルの名前です。余分なスペース、または「i」で綴られたインデックスはファイルを認識しないため、インデックスは生成されません。

見るのに苦労するもの...

[そして私の場合、それほど頻繁には起こりません!]

于 2013-05-11T19:39:13.787 に答える