1

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

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

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

Answers:每个问题可以有多个答案,这些答案与问题表中的外键一起存储在此表中。

  1. 这三个表中的每一个在应用程序中都有它们的模型文件,但是在 Solr 中,我想要一个由各个表中的字段组成的单个文档(主驱动表的每条记录)。
  2. 只有当数据库中的状态设置为“活动”时,我还想添加一条记录(一个问题)。是否可以在使用太阳黑子进行索引时添加此条件?

太阳黑子能满足这两个要求吗?如果没有,是否有其他可用于带有 Solr 的 Rails 扩展,我可以在其中单独配置 solr(通过 DIH、schema.xml 等)并将其与扩展中可用的功能一起使用?

4

1 回答 1

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
于 2013-06-07T16:08:49.613 回答