轨道太阳黑子中的条件索引

时间:2013-05-05 07:30:51

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

我非常精通Solr并且之前使用过DIH。在我正在处理的当前应用程序中,我的Solr文档将包含3个表中的字段(因为数据库的RDBMS设计)。

Questions:这是主表,id(问题id)是所有其他表的外键

Questions and topic mapping表:将多个主题映射到单个问题。

Answers:每个问题都有多个答案,这些答案都存储在此表中,并带有问题表中的外键。

  1. 这三个表中的每一个都在应用程序中有他们的模型文件,但是在Solr中我想要一个单独的文档(主驱动表的每个记录)由各个表中的字段组成。
  2. 我还想添加记录(问题),只要它在db中的状态设置为'active'。是否可以在使用太阳黑子进行索引时添加此条件?
  3. 太阳黑子能满足这两项要求吗?如果没有,是否有一些其他扩展可用于带有Solr的rails,我可以单独配置solr(通过DIH,schema.xml等)并将其与扩展中可用的功能一起使用?

1 个答案:

答案 0 :(得分:1)

我没有测试过这段代码,但也许它会让你朝着正确的方向前进。我知道:if肯定会有用,我不确定在文本字段中使用multiple

class Question < ActiveRecord::Base
  has_many :topics
  has_many :answers

  searchable :if => active? do
    text :question_text

    text :topics, :multiple => true do
      topics.pluck(&:topic_text)
    end
    # Not sure if `multiple` works with text fields, so alternatively:
    #text :topics do
    #  topics.pluck(&:topic_text).join()
    #end

    text :answers, :multiple => true do
      answers.pluck(&:answer_text)
    end
  end
end