我错过了Solr-Sunspot设置的哪一部分?
我以为我有这个蛋糕..但任何时候我对任何关键字进行查询它不会从SQL加载任何表。 我没有错。
user.rb
searchable do string :first_name string :last_name string :name string :email time :created_at end
users_controller.rb
class Admin::UsersController (params[:page] && params[:page].to_i || 1), :per_page => 20 query.order_by('created_at', 'desc') end s.execute! @users = s.results render :action => 'index' end
然后我跑了:
$> script/console $> User.reindex
当我完全没有搜索时..成功显示所有User
结果
我相信我要将所有这些字符串标记转换为文本标记,但会返回此错误:
Sunspot::UnrecognizedFieldError in Admin/usersController#index No field configured for User with name 'first_name'
为了回应关键字,我错过了什么?
(对您自己的自我跟进的更完整的解释。)
关于你的设置:
searchable do string :first_name string :last_name string :name string :email time :created_at end
Solr中的字符串旨在用于完全匹配。 它不像文本列那样进行预处理或标记。 这些文字匹配用于过滤(“category_name等于’Sale’”),分面,排序等。
您更可能想要text
字段。 文本字段使用标准标记生成器进行标记,使用LowerCasefilter进行小写,并使用标准filter删除其点和撇号以及许多其他可能的选项。
当人们想到Solr全文搜索的function时,他们会考虑如何处理text
字段。
此外,Sunspot的keywords
搜索方法默认搜索所有文本字段,这解释了当您包含keywords
时未获得结果的原因 – 您的文档没有要搜索的文本字段。
正如您在自我跟进中所述,您需要切换到text
字段以获得您期望的结果。
这不是最好的答案,但我发现将字符串和文本标签组合在一起起作用。 所以我的用户模型如下所示:
searchable do text :first_name text :last_name text :name text :email time :created_at string :first_name string :last_name string :name string :email end
- Rails教程演示应用程序中的ExecJS :: ProgramError
- 用于保护S3文档的Rails实现
- Rails中的嵌入式Google地图无法响应
- 字符串的未定义方法`serializable_hash’
- 在Ruby on Rails中自动增加非主键字段
- rake assets:预编译给出“错误:堆栈空间不足”错误
- Rails ActiveRecord关系助手如何允许诸如`user.groups.new`之类的方法?
- WIN x64上的ruby-debug-base19-0.11.26.gem
- Rails3中的DEPRECATION WARNING for before_create,before_update,before_save,before_destroy