ruby-on-rails - 我缺少 Solr-Sunspot 设置的哪一部分?

标签 ruby-on-rails search solr sunspot

我以为我已经小菜一碟了..但是每当我对任何关键字进行查询时,它都不会从 SQL 加载任何表。我没有收到任何错误。

用户.rb

searchable do
  string  :first_name
  string  :last_name
  string  :name
  string  :email
  time    :created_at
end

users_controller.rb

class Admin::UsersController < Admin::ApplicationController

  def index
    s = Sunspot.search User do |query|
      query.keywords params[:q]
      query.any_of do |any_of|
        any_of.with(:first_name)
        any_of.with(:first_name)
        any_of.with(:email)
        any_of.with(:name)
      end
      query.paginate :page => (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

当我根本不进行搜索时..它成功显示所有用户结果

相信我要将所有这些字符串标签变成文本标签,但这会返回此错误:

Sunspot::UnrecognizedFieldError in Admin/usersController#index

No field configured for User with name 'first_name'

为了让它响应关键字,我缺少什么?

最佳答案

(对您自己的 self 跟进进行更完整的解释。)

关于您的设置:

searchable do
  string  :first_name
  string  :last_name
  string  :name
  string  :email
  time    :created_at
end

Solr 中的字符串旨在用于精确匹配。它没有像文本列那样进行预处理或标记化。这些文字匹配用于过滤(“其中category_name 等于'Sale'”)、分面、排序等。

您更有可能需要文本字段。文本字段使用 Standard Tokenizer 进行标记化,小写为 LowerCase Filter ,并用 Standard Filter 删除它们的点和撇号。以及许多其他潜在的选择。

当人们想到 Solr 全文搜索的功能时,他们会想到它如何处理 text 字段。

此外,默认情况下,Sunspot 的关键字 搜索方法会搜索您的所有文本字段,这解释了为什么当您在文档中包含关键字 时,您没有获得结果没有可搜索的文本字段。

正如您在 self 跟进中注意到的那样,您需要切换到文本字段以获得您期望的结果。

关于ruby-on-rails - 我缺少 Solr-Sunspot 设置的哪一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748288/

相关文章:

reactjs - 如何让我的 React Web 应用程序出现在谷歌搜索中?

php - 使用臭名昭著的 CActiveRecord 在 Yii 框架中一次查找多个记录?

使用 API v2.0 的 Facebook 公共(public)帖子搜索

Solr 6 - 字段的 SUM 值以及 GROUP BY

solr - 将 solr 文档与数据库记录同步

ruby-on-rails - Gemfile语法错误

ruby-on-rails - 在用户登录 Rails 时隐藏一个 div

ruby-on-rails - 具有载波和多态关联的 Rails 上传表单

solr - 向 SOLR 添加新字段并使用默认值。填充现有文档

ruby-on-rails - psql : FATAL: sorry, 客户端已经太多了,HEROKU