2012-04-25 3 views
3

Rails 3 및 Sunspot solr 3.5로 작업하고 있습니다. 내 응용 프로그램은 Solr을 사용하여 사용자 생성 콘텐츠를 색인화하고 다른 사용자를 검색 할 수있게합니다. 목표는 사용자가 업로드 한 시점부터 최대한 빨리이 데이터를 검색 할 수 있도록하는 것입니다. 이것이 실시간 검색의 자격이되는지 나는 모른다. 특정 기술을 기반으로 사용자 검색이 post_item에 제공되는 경우 있도록태양 흑점과 Solr 3.5. 실시간 검색을위한 인덱스 수동 업데이트

내 응용 프로그램은 두 가지 모델

  1. 게시물
  2. PostItems 후 항목에서 데이터를 포함하여

I 지수 게시물이 있습니다 해당 게시물 개체가 검색에서 사용 가능하게 기록하십시오.

사용자는 자주 post_items를 업데이트하므로 새 post_item이 추가 될 때마다 새 post_item을 검색 중에 사용할 수 있도록 해당 게시물 객체를 다시 색인해야합니다.

그래서 순간에 나는 새로운 post_item 객체를받을 때마다 나는 this documentation에 따라 즉시 인덱스를 업데이트하고 커밋
 

post_item.post.solr_index! # 
 

를 실행합니다. 이 방법이 작동하지만이 시나리오에서 인덱싱을 처리하는 올바른 방법입니까? 검색하는 동안 호출 색인이 solr을 깨뜨릴 수 있다고 here 읽습니다. 또한 수시로 수동으로 색인을 호출하는 방법은 없습니다.

올바른 방법을 제안합니다. 의이 말을 매 순간하자, 당신보다 배치 인덱싱을 할 수있을 것입니다 https://github.com/bdurand/sunspot_index_queue

이 보석을 사용하는

답변

1

시도 ElasticSearch로 전환 이외의 다른 대안이 있는가, 그것은 확실히 브레이크 인덱스를하지 않습니다

+0

그러나 어떻게하면 일괄 인덱싱이 진행되는 동안 검색하지 않는 것이 보장됩니다. 실시간 검색 중에 solr이 중단되는 원인이 아닙니까? 검색을 수행하지 않고도 색인을 생성 할 수있는 좋은 시간은 하나도 없기 때문입니다. – Sid

+0

이 solrconfig.xml이 http://solr-ra.tgels.org/wiki/en/Near_Real_Time_Search_ver_3.x를 조정하지만 데이터가 실제로 민감한 경우 프로덕션 환경에서 테스트하지 않았으므로이 기능을 두 번 테스트해야합니다 프론트 엔드 사용자가 검색하는 동안 백엔드 색인 생성에 문제가 없었기 때문에 - 하루에 10K 명/200 개의 새로운 문서 추가) – okliv

1

하는 경우 당신은 방금 시작하고 Solr과 ElasticSearch 사이에서 선택할 수있는 사치를 가지고 있습니다, go with ElasticSearch.

우리는 Solr을 프로덕션 환경에서 사용하며 인덱스 및 검색 볼륨이 커짐에 따라 많은 이상한 문제가 발생했습니다. 결론은 거대한 문서 (단어/pdf 콘텐츠)를 색인 생성하고 많은 수십억 (수십억)의 색인 생성을 위해 작성되었거나 최적화되었지만 색인을 하루에 한 번 또는 아무도 검색하지 않을 때 업데이트하는 것으로 나타났습니다.

문서가 작고, 수가 적으며 (수백만 개) 작은 업데이트가 임의적이고 연속적이며 검색이 다소 실시간이어야합니다 (5 ~ 10 초의 지연은 괜찮습니다) .

우리가 서버를 조정하기 위해 적용한 몇 가지 트릭입니다.

removed all commits (i.e., !) from rails code, 
use Solr auto-commit every 5/20 seconds, 
have master/slave configuration, 
run index optimization(on Master) every 1 hour 
and more. 

커밋 트리거시 슬레이브에 여전히 높은 CPU 사용량이 표시됩니다. 그 결과 일부 검색에는 시간이 오래 걸립니다 (> 60 초).

또한 일괄 처리 인덱싱 sunspot_index_queue gem이 높은 CPU 문제를 해결할 수 있는지 의심 스럽습니다.

관련 문제