【问题标题】:Sunspot solr "No field configured for User with name 'C2'"Sunspot solr“没有为名为‘C2’的用户配置字段”
【发布时间】:2017-05-19 13:55:26
【问题描述】:

我想在我的太阳黑子搜索中添加排序。无需订购搜索即可完美运行。 这是我的搜索方法:

def search
    @search = User.search do
      keywords params[:q]
      paginate page: params[:page]
      order_by(:C2, :desc)
    end
    @users = @search.results
    respond_to do |format|
      format.html { render :action => "index" }
    end
  end

我的用户模型

class User < ActiveRecord::Base
  searchable do
    text :C1
    text :C2
  end
end

所以我明白了

没有为名为“C2”的用户配置字段

在 order_by 行

另外我认为问题的原因可能是 C2 是文本,而不是字符串,所以我已经完成了下一个 hack:

class User < ActiveRecord::Base
  searchable do
    text :C1
    text :C2
    string  :sort_title do
      C2.downcase
    end
  end
end

为了在控制器中添加order_by (:sort_title, :desc),但由于某种原因,当我重新索引时,我得到了:

NameError: 未初始化的常量 User::C2

我做错了什么?

【问题讨论】:

  • 分享你的用户模型..
  • @Md.FarhanMemon 请仔细检查,它在那里
  • 我的意思是表格的列..
  • 用户:id、C1、C2、C3、C4、C5、created_at、updated_at。
  • @Md.FarhanMemon 我认为第一个错误肯定是因为文本类型......但是第二个错误的原因是什么,我什至没有想法。有什么想法吗?

标签: ruby-on-rails ruby-on-rails-4 solr sunspot


【解决方案1】:

试试这个:

searchable do
  text :C1
  text :C2
  string :sort_title do |user|
    user.C2.downcase
  end
end

然后尝试重新索引,它应该会顺利..

【讨论】:

  • 我想知道,为什么 sunspots github 页面上的示例代码没有类似 do |post| 的内容?您可以在这里查看:github.com/sunspot/sunspot,“设置对象”部分的下一个示例
  • 是的..我也想知道。我只是知道它,因为我在我的代码中使用了这样的语法..并且它有效.. ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多