2013-04-12 1 views
7

Solr 색인 생성 메커니즘에 대해 혼란스러워합니다. 아마도 누군가가 그것에 대해 밝힐 수 있습니다. , 지금까지 내가 이해Sunspot Solr의 색인을 유지 관리하는 올바른 방법은 무엇입니까?

namespace :sunspot do 
    namespace :solr do 
    desc "indexes searchable models" 
    task :index => :environment do 
     [Model1, Model2].each do |model| 
     Sunspot.index!(model.all) 
     end 
    end 
    end 
end 

의 나의 정의 : 여기 내 index 작업 (내가 Mongoid을 위해 그것을 오버라이드)의 모습이다 rake sunspot:solr:indexrake sunspot:solr:reindex

:

그래서 우리는 2 개 레이크 명령을 index은 컬렉션을 실행할 때마다 컬렉션을 효과적으로 다시 인덱싱합니다.

맞습니까? 이전 색인을 덮어 쓰거나 이전 색인을 삭제하고 새 색인을 만들려면 reindex을 사용해야합니까?

나는 보석 sunspot v2.0.0, sunspot_mongo v1.0.1을 사용하고

, sunspot_solr v2.0.0

답변

8

색인화 작업이 바로 각 모델에 solr_reindex를 호출하고, 그 방법에 대한 소스가 아래 (GitHub의에서 촬영)된다. 당신이 solr_index에 대한 소스를 보면

# Completely rebuild the index for this class. First removes all 
    # instances from the index, then loads records and indexes them. 
    # 
    # See #index for information on options, etc. 
    # 
    def solr_reindex(options = {}) 
    solr_remove_all_from_index 
    solr_index(options) 
    end 

는 코멘트 메소드 줘야 "는 SOLR 지수에/업데이트 기존의 모든 기록을 추가합니다."라고

질문에 대한 답변을 얻으려면 reindex 작업은 reindex 작업이 먼저 기존 색인을 삭제한다는 점을 제외하고는 index 작업과 본질적으로 같습니다. 색인에 색인에없는 항목이 있으면 reindex으로 전화해야합니다. 색인에 항목을 추가하거나 업데이트한다는 것을 알고 있다면 index에 전화를 걸고 색인을 삭제 한 다음 처음부터 다시 작성하면 성능이 떨어지지 않을 수 있습니다.