ruby-on-rails - 太阳黑子索引和搜索标签返回一切

标签 ruby-on-rails sunspot

我在我们的项目中使用 act_as_taggable_on 进行标记,并使用 sunspot/solr 进行搜索。

我们得到了一个奇怪的意外结果。首先我们的设置(简短版本):

模型:

Class Person
  has_many :projects

  searchable do
    string :project_tags, :multiple => true do
      projects.map { |p| p.tag_list}.flatten
    end
  end

Taglist 是来自 act_as_taggable_on 的一个方法,它为每个项目返回一个标签数组(例如 ["foo", "bar"])。我们为项目成员索引项目标签。

当我们在 Controller 中执行以下操作时:
Person.search() do
   with(:project_tags).any_of(params[:tags])
end

这会返回合适的人。到现在为止还挺好。

问题
我们希望能够搜索多个标签。因此,根据太阳黑子指令,我们传递一个数组。代码大致如下:
@tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(@tags_array)
end

现在,无论我们使用什么标签,Sunspot 都会为我们提供每个人!我们一直在控制台中疯狂地测试这个,但不明白我们哪里出错了。

任何帮助,将不胜感激!
埃尔文

最佳答案

好的,我们自己“解决了”这个问题,如果有人提出同样的问题,我会在这里报告。

不知何故,在我们的搜索声明中,Sunspot 不喜欢 @tags_array,经过一些测试,任何 @variable 都将不起作用。一旦我们将其更改为:

tags_array= params[:tags].split(/ /)
Person.search() do
   with(:project_tags).any_of(tags_array)
end

有效。

干杯,
埃尔文

关于ruby-on-rails - 太阳黑子索引和搜索标签返回一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060502/

相关文章:

ruby-on-rails - Mysql 等同于 rails 查询

ruby-on-rails - Sunspot on Rails 中命中结果分数的计算公式是什么?

ruby-on-rails - 太阳黑子:更新子模型时父模型的力指数

ruby-on-rails - 你认为 Reddit 如何处理重新索引他们的帖子以保持准确的顺序?

ruby-on-rails - 销毁无效迁移

ruby-on-rails - 如何从 Devise 中删除/禁用注册

ruby-on-rails - Solr Facet 值的自定义排序 - Rails 和 Sunspot Solr

mongodb - 使用 mongomapper、sunspot/solr 或 sphinx 高级搜索 mongodb?

ruby-on-rails - AFNetworking HTTPClient 从 Rails JSON 服务接收 406

ruby-on-rails - 仅截断 Rails 中较旧的帖子