【问题标题】:Thinking Sphinx not generating results思考狮身人面像没有产生结果
【发布时间】:2013-05-12 06:56:11
【问题描述】:

产生错误:

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 包含

宝石'导轨','3.2.13'
宝石'pg','0.14.1'
宝石'mysql2','0.3.12b5'
gem '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

【问题讨论】:

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


    【解决方案1】:

    需要注意的两点:

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

    【讨论】:

    • 这种思路是我基于其他讨论的怀疑之一。但我有点不确定。自制的 Wiki 从未提及配方;我担心我会大错特错。
    • 此外,可能还有手动下载和编译的选项(不确定如何与 brew 结合)。那么 OS X 10.6 是哪个二进制文件? 2.0.6 没有 OS x 库包 - 7 和 8 有。还是 tarball 合适?
      感谢您的及时 BTW 非常感谢。
    • 如果您自己编译,请获取 tarball。最新的 Homebrew 有 Sphinx 2.0.7,应该可以正常工作:github.com/mxcl/homebrew/blob/master/Library/Formula/sphinx.rb
    • 现在它说你安装了没有 PostgreSQL 支持的 Sphinx。你是如何安装 PostgreSQL 的?
    • 顺便说一句,达到了“Huzzah”阶段,还剩下一些熨烫。我想念从最左边向右转的小镇!
    【解决方案2】:

    需要更新 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
    

    两人都跑了。

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      相关资源
      最近更新 更多