思考狮身人面像没有产生结果

时间:2013-05-12 06:56:11

标签: ruby-on-rails-3.2 rvm thinking-sphinx

生成错误:

  

未定义的方法`inject'为nil:NilClass

尽管有以下讨论: https://github.com/pat/thinking-sphinx/issues/408#issuecomment-12593562 似乎我已经为我的基于postgre的应用程序正确安装了mySQL和sphinx

  

MacBook-Pro-di-jerdvo:saim jerdvo $ brew安装sphinx --mysql
  错误:已安装sphinx-2.0.3
MacBook-Pro-di-jerdvo:saim   jerdvo $ brew install mysql
错误:mysql-5.5.20已安装

gemfile包含

  

gem'trail','3.2.13'
  宝石'pg','0.14.1'
  gem'mysql2','0.3.12b5'
  宝石'思考 - 狮身人面像','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

2 个答案:

答案 0 :(得分:0)

有两点需要注意:

  • 在MacOS X上你需要Sphinx 2.0.6或更新版本的TS v3(​​由于早期Sphinx版本中仅在OS X上带有线程守护进程的bug)。
  • 您需要使用MySQL支持编译的Sphinx。只在你的系统上同时使用MySQL和Sphinx并不能保证这一点 - 最好的检查方法是使用MySQL作为你的app数据库(只是暂时的 - 我也更喜欢PostgreSQL),检查Sphinx是否正好使用该设置进行索引,然后就可以了确保编译MySQL支持。也就是说,当你更新到2.0.6或更新版本(可能需要更新你的酿造食谱)时,如果情况并非如此,我会感到惊讶。

答案 1 :(得分:0)

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

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

然后重新安装mysql2和思考sphinx ......

注1: 依赖性可能是一个问题。 mysql2需要0.3.12b4最小AND 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是Unstartable。测试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

两人跑了。