2011-07-17 1 views
1

우리 프로젝트의 인덱싱 솔루션으로 Sunspot을 조사하고 있습니다. 한 가지는, 나는 어떤 정보도 찾지 못한다 : 어떻게 데이터에 대한 업데이트가 처리 되는가? 색인을 생성하고자하는 클래스를 "설정"했다면, solr 서버는 객체에 대한 변경 사항을 어떻게 알 수 있습니까?Sunspot : 델타 인덱싱은 어떻게 작동합니까?

은 또한 다음 시나리오를 고려하십시오

Sunspot.setup(Artwork) 
    text :synonyms do 
    synonyms.map { |s| s.name } 
    end 
end 

가 가진 작품 "모나리자"를 감안할 때 :

을 나는 "has_many"동의어과 내가 내 색인이 방법을 구성 할 수준의 작품이 동의어는 "La Gioconda"와 "Not so big smile"입니다. 마지막 동의어를 업데이트하면 solr에게 알림이 전송되고 "Mona Lisa"에 대한 색인이 다시 작성됩니까?

답변

2

Sunspot :: Rails와 ActiveRecord 모델을 사용하는 경우 모델을 저장할 때마다 Solr의 레코드 데이터를 자동으로 업데이트하는 라이프 사이클 후크가 있습니다. 그러나 당신처럼 위의 모습은 어떤 경우에 당신은 예를 들어 자신의 라이프 사이클 후크, 설정해야합니다, 순수 태양 흑점 사용하고 있습니다 :

after_save { |artwork| Sunspot.index(artwork) } 

또한 어떤 상황에 대한 자신의 라이프 사이클 논리가 필요합니다을하는 종속 모델 업데이트는 Solr에서 상위 문서를 업데이트해야합니다 (예 : 위의 동의어 모델로 직접 업데이트).

+0

고마워요. 정확히 내가 알고 싶었던 것! – moritz

0

아니요, Solr에는 이러한 자동 알림이 없습니다. 동의어가 txt 파일에 저장되므로 solr 서버를 다시 시작한 다음 다시 색인해야합니다. 모든 solr 구성과 동일한 경우.

+0

정말입니까? 나는 이것을 읽었 기 때문에 물어 본다. http://www.vijedi.net/2010/ruby-full-text-search-performance-thinking-sphinx-vs-sunspot-solr/ "Solr 서버는 클러스터 될 수 있고 인덱스를 관리하기 때문에 Sunspot은 모델 오브젝트가 변경 될 때 인덱스를 자동으로 업데이트 할 수 있습니다. Thinking Sphinx와 같이 데이터를 다시 색인화하거나 델타 인덱싱을 설정하기 위해 cron 작업을 실행할 필요가 없습니다. " – moritz

+0

모델을 변경할 때 수동으로 다시 색인하지 않아도됩니다. 분석기를 변경하거나 동의어 등을 변경할 때 solr 자체의 구성이 변경 될 때 다시 색인을 생성하는 것에 대해 이야기하고 있습니다. – leenasn

+0

예, 이러한 경우 전체 색인을 다시 만들어야한다는 것을 알고 있습니다. 그러나 위의 시나리오에서는 구성과 데이터 만 변경하지 않습니다. 그래서 solr이 통지를 받을지 궁금해집니다 (모델 데이터가 변경 될 때뿐만 아니라 관련 데이터가 변경되는 경우). – moritz