【问题标题】:Sunspot scoped queries not working太阳黑子范围内的查询不起作用
【发布时间】:2012-05-31 21:33:08
【问题描述】:

我正在使用Sunspot 和范围查询来实现全文搜索,但它不起作用。当我删除“with”查询和搜索时,它可以工作,但是当我在其中添加查询时,它不会。我查看了文档,它的结构应该是正确的,有什么想法吗?

名称和类别都是 Items 表中的字符串。作为一个简单的尝试,我一直在尝试只使用空搜索来获取“电子产品”项目,这通常会导致所有项目都显示为没有查询。

型号

searchable do
  text :name, :category
  string :category
end

控制器

def search
  @search = Item.search do
    fulltext (params[:search])
    with(:category, 'electronics')
  end

  @items = @search.results

  respond_to do |format|
    format.html
    format.js
  end
end

非常感谢您的帮助!

【问题讨论】:

  • 你有reindexed你的模型并致力于太阳黑子吗?如果您搜索时没有文字但使用with,会怎样?

标签: ruby-on-rails ruby ruby-on-rails-3 sunspot sunspot-rails


【解决方案1】:

您已将字段 :category 定义为文本和字符串。 从您的控制器代码中可以看出,您希望将其用作字符串。 修改您的 :category 声明后问题会消失吗?

顺便说一下,name 在这里做什么 - 当然 name 必须是一个字符串。您的模型中有文本字段吗? text 这里的意思是一大块文本,可能有数百个字符,如果不是数千个的话。

【讨论】:

  • 我最初将 :category 定义为字符串,但是当我将其设置为文本时出现错误,但我没有。设置为两者是我收到的建议,我没有收到错误,但过滤仍然无法正常工作。是的,名字是一个字符串,但由于某种原因,我不能用字符串进行全文搜索,但它的文本可以工作。我决定将类别更改为整数,当我按数字搜索时它会起作用,尽管我不认为这是最好的方法。
【解决方案2】:

我遇到了这个问题,我的 with 过滤器没有产生任何结果。

重新启动 Rails/Solr 然后运行 ​​rake sunspot:reindex 为我修复了它。

我尝试运行 rake sunspot:reindex 几次(沮丧地),但直到我重新启动 Solr 然后重新建立索引后它才起作用。

我猜这是因为我是通过 Foreman Procfile 启动 Sunspot,并且绑定到 Solr 的 Rails 实例在您更改它们时不会重新加载模型类。 (类似于它处理worker 进程的方式......您必须重新启动 Rails 才能让 Foreman 获取对作业代码的更改。)

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多