1

生成エラー:

nil:NilClass の未定義メソッド「inject」

https://github.com/pat/thinking-sphinx/issues/408#issuecomment-12593562での議論にもかかわらず、 postgre ベースのアプリケーション用に mySQL と sphinx が適切にインストールされているようです。

MacBook-Pro-di-jerdvo:saim jerdvo$ brew install sphinx --mysql
エラー: sphinx-2.0.3 は既にインストールされています
MacBook-Pro-di-jerdvo:saim jerdvo$ brew install mysql
エラー: mysql-5.5.20 は既にインストールされています

gemfile に含まれるもの

gem 'rails', '3.2.13'
gem 'pg', '0.14.1'
gem 'mysql2', '0.3.12b5'
gem 'thinking-sphinx', '3.0.3'

検索パラメータがキャプチャされています

{"utf8"=>"✓", "staticpage_search"=>{"terms"=>"メッシーナ"}}

検索モデルはコードを実行しています

  def search(options = {})
    extra_conditions = options.delete(:conditions) || {}
    order = options.delete(:order) || '@weight DESC'
    extra_with = options.delete(:with) || {}

    with = search_with.merge(extra_with)
    conditions = search_conditions.merge(extra_conditions)

    base_class.search sanitized_terms, :conditions => conditions, :with => with, :page => page, :per_page => per_page, :sort_mode => :extended, :order => order, :retry_stale => true, :match_mode => :extended
  end

  def sanitized_terms
    @terms ||= ""
    sanitize(@terms)
  end

  def sanitize(s)
    if s.respond_to? :gsub
      s.gsub("/", "\\/")
    else
      s
    end
  end
4

2 に答える 2

0

2 つの注意事項:

  • MacOS X で TS v3 を使用するには、Sphinx 2.0.6 以降が必要です (OS X のみでスレッド化されたデーモンを使用する以前の Sphinx バージョンのバグのため)。
  • MySQL をサポートするようにコンパイルされた Sphinx が必要です。システムに MySQL と Sphinx の両方があるだけでは、これは保証されません。チェックする最善の方法は、アプリケーション データベースとして MySQL を使用することです (一時的に - 私は PostgreSQL も好みます)。 MySQL サポートがコンパイルされていることを確認してください。とは言っても、2.0.6 以降に更新した場合 (醸造レシピの更新が必要になる場合があります)、そうでない場合は驚くでしょう。
于 2013-05-12T11:47:21.910 に答える