Ultrasphinx和Rails:完全错误的结果 - 为什么?

时间:2010-05-18 13:06:17

标签: ruby-on-rails sphinx aspell ultrasphinx

我正在使用Ultrasphinx在Rails应用程序上进行搜索。一切似乎都在起作用,唯一的一点是搜索结果不会以任何方式与搜索查询匹配。我真的不明白这一点。我重建了索引和配置文件几次,似乎没有任何工作。当我执行搜索“测试”时,我得到的结果在任何列中都没有“test”一词。

这只发生在我的生产服务器上。在开发环境中,一切正常。

我真的不知道为您提供哪些信息,我只是将我的设置粘贴到模型和控制器中

# models/video.rb

is_indexed :fields => ['title', 'description', 'id'],
    :concatenate => [{:class_name => 'Tag', 
        :association_sql => "LEFT OUTER JOIN tags_videos ON (videos.id = tags_videos.video_id) LEFT OUTER JOIN tags ON (tags_videos.tag_id = tags.id)",
        :field => 'name', :as => 'tagstring'}],
    :order => "videos.created_at DESC",
    :eagerly_load => [:tags],
    :delta => true

# models/tag.rb

is_indexed :fields => ['name'],
    :delta => true


# controllers/searches_controller

class SearchesController < ApplicationController

  def search
    @search_query = (params[:query]) ? params[:query] : nil
    unless @search_query.nil?

      # set the search options
      search_options = {:query => @search_query,  
        :page => (params[:page] || 1),
        :weights => {'title' => 2.0, 'description' => 1.0, 'tagstring' => 1.0},
        :per_page => 40,  
        :class_names => ["Video"],
        :sort_mode => 'relevance'}
      @search = Ultrasphinx::Search.new(search_options)  
      Ultrasphinx::Search.client_options['ignore_missing_records'] = true
      @search.run  
      @videos = @search.results
    end
  end

end

运行rake ultrasphinx:configure

时,我也遇到此错误
Rebuilding configurations for production environment
Available models are Tagtranslation missing: en_US, support, array, two_words_connectorVideo
Generating SQL

但我不知道,这与它有什么关系。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我可以使用选项

安装Sphinx 0.9.9来解决问题
--prefix=/usr/local/sphinx

- &GT; http://www.sphinxsearch.com/docs/current.html#installing

之后我删除了所有旧索引,重新创建了配置文件,重新创建了索引并重新启动了ultrasphinx守护程序。

非常感谢。