【问题标题】:Thinking Sphinx multiple form fields思考狮身人面像多个表单域
【发布时间】:2012-02-20 03:08:34
【问题描述】:

一直在为此苦苦挣扎......

表单截图:http://i.stack.imgur.com/PBWMW.jpg

字段名称/ID: 姓名 |电子邮件 | company_id |用户类型

控制器:

@users = User.search(params[:name], params[:email], params[:company_id], params[:user_type])

型号:

define_index do
   indexes :name
   indexes :email
   indexes :company_id
   indexes :user_type
end

这样做的正确方法是什么,已搜索文档但找不到任何有用的信息:(

【问题讨论】:

    标签: mysql ruby-on-rails-3 sphinx thinking-sphinx


    【解决方案1】:

    通过 Sphinx 按字段搜索的最简单方法是传递哈希。您可以消除 nil-s 以确保 thinking_sphinx 将查看传入的请求

    conditions = {}
    %w(name email company_id user_type).each do |i|
      i = i.to_sym
      next unless params[i]
      conditions[i] = params[i]
    end
    
    User.search(:conditions => conditions)
    

    【讨论】:

    • 谢谢!但由于某种原因,我得到:索引 user_core:查询错误:在架构中找不到字段 'company_id'
    • 在将 company_id 字段添加到索引定义后,您是否运行过 ts:rebuild(或重新索引并重新启动 Sphinx)?
    • 是的,这些字段在我开始使用 Sphinx 之前就已经存在。我重新索引并重新启动,现在得到:index user_core: syntax error, unexpected TOK_FIELDLIMIT near @email @company_id @user_type
    • "company_id" 应该是 has,而不是 indexes
    • 更改为“有”但仍然出现相同的错误这是我的模型中的内容:define_index do indexes :name indexes :email has :company_id has :user_type end
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多