1

产生错误:

nil:NilClass 的未定义方法“注入”

尽管在: 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 包括

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

正在捕获搜索参数

{"utf8"=>"✓", "staticpage_search"=>{"terms"=>"Messina"}}

搜索模型正在运行代码

  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

有两点需要注意:

  • MacOS X 上的 TS v3 需要 Sphinx 2.0.6 或更新版本(由于早期 Sphinx 版本中的错误,仅在 OS X 上带有线程守护程序)。
  • 您需要使用 MySQL 支持编译的 Sphinx。仅在您的系统上同时拥有 MySQL 和 Sphinx 并不能保证这一点 - 最好的检查方法是使用 MySQL 作为您的应用程序数据库(只是暂时的 - 我也更喜欢 PostgreSQL),检查 Sphinx 索引是否符合该设置,然后您可以确保编译了 MySQL 支持。也就是说,当您更新到 2.0.6 或更高版本(可能需要更新您的 brew 配方)时,如果不是这样,我会感到惊讶。
于 2013-05-12T11:47:21.910 回答
0

需要更新 Sphinx。但是,执行索引还需要以下内容:

brew uninstall sphinx
gem uninstall mysql2
gem uninstall thinking-sphinx
brew upgrade sphinx
brew install sphinx --mysql --pgsql

然后重新安装mysql2和thinking-sphinx ...

注意 1:依赖关系可能是一个问题。mysql2 至少需要 0.3.12b4 且 pg 需要 0.15.1

gem 'mysql2', '0.3.11'
gem 'pg', '0.14.1'

笔记2:

brew update

也可能产生错误。重大:

此 gem 是为 5.5.20 编译的,但客户端库是 5.6.10

5.6.10 从未在升级、下载或其他任何操作中被要求(在 mysql 初始安装后从未接触过系统)。我的结论: brew 令人困惑,并使用更新的公式安装了版本。为 mysql 服务器调整的 database.yml 无法启动。对 mysql 支持的测试无法验证。

brew uninstall mysql
brew upgrade mysql
brew install mysql
mysql.server start

让 mySQL 运行。此时,gem 被编译为错误的早期版本。

gem uninstall mysql2

我选择删除所有版本。

bundle install
rake db:create:all
rake db:migrate

创建和同步 mysql 数据库

rake ts:configure
rake ts:index

两人都跑了。

于 2013-05-14T02:29:25.963 回答