2013-05-05 2 views
1

저는 Solr에 능숙하며 이전에 DIH를 사용했습니다. 현재 응용 프로그램에서 솔라 문서 작업은 3 개의 테이블 (DB의 RDBMS 설계 때문에)의 필드로 구성됩니다.레일스 흑점의 조건부 인덱싱

Questions : 단일 질문에 대한지도 여러 주제 :이 다른 모든 테이블

Questions and topic mapping 테이블에 대한 외래 키되는 ID (질문 ID)와, 메인 테이블입니다.

Answers : 각 질문에는 여러 개의 답변이있을 수 있으며이 테이블에는 질문 테이블의 외래 키가 포함되어이 테이블에 저장됩니다.

  1. 각 3 개의 테이블은 앱에 모델 파일이 있지만 Solr에서는 다양한 테이블의 필드로 구성된 단일 문서 (주행 테이블의 레코드 당)가 필요합니다.
  2. 또한 db의 상태가 '활성'으로 설정된 경우에만 레코드 (질문)를 추가하려고합니다. 흑점으로 색인을 생성하는 동안이 조건을 추가 할 수 있습니까?

이러한 두 가지 요구 사항을 흑점으로 맞출 수 있습니까? 그렇지 않다면 Solr을 별도로 (DIH, schema.xml 등을 통해) 구성하고 확장 기능에서 사용할 수있는 기능과 함께 사용할 수있는 다른 확장이 있습니까?

답변

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 
+0

어쨌든 텍스트 필드에 여러 개가 필요하지 않습니다. – rewritten

관련 문제