0

我正在使用带有范围查询的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

非常感谢您的帮助!

4

2 回答 2

1

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

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

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

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

于 2014-08-08T12:55:08.560 回答
1

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

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

于 2012-06-01T07:37:42.933 回答