2012-01-10 4 views
4

내 개발 구성에서 생각 스핑크스 색인을 다시 색인하는 데 몇 시간이 걸리는데, 이는 대부분 거대한 개의 테이블 (델타 업데이트를 사용하지 않음) 때문입니다. 훨씬 작은 테이블에 대한 인덱스를 변경할 때조차도 큰 테이블이 존재하기 때문에 다시 인덱싱하는 데 1 시간 이상 걸립니다.생각하기 스핑크스 - 테이블 단위로 인덱스 다시 만들기

지정된 테이블에 대해서만 TS를 강제로 다시 인덱싱 할 수있는 방법이 있습니까?

답변

10

Thinking Sphinx가 한 번에 하나의 색인을 처리한다고 말할 수는 없지만 Sphinx의 인덱서 도구를 통해 확실히 가능합니다.

indexer --config config/development.sphinx.conf model_core 

몇 가지 참고 사항 : 당신이 당신의 색인을 제공하지 않는 한 사용자의 이름을 정의, 그것은 downcased, 모델 이름에 기본 및 _core 접미사로, 강조합니다. 델타 인덱스가 있다면 델타 접미사가 붙습니다. 또한 Sphinx가 실행중인 경우 해당 통화에 --rotate 플래그를 추가하십시오.

인덱스는 원하는만큼 지정할 수 있습니다. 한 번에 모든 지수를 처리하고 싶다면 (Thinking Sphinx의 레이크 과제와 마찬가지로), --all이이를 처리 할 것입니다.

제쳐두고 - 얼마나 많은 기록을 말하고 있습니까? 인덱스 정의가 얼마나 복잡합니까? 색인 처리를위한 몇 시간은 전혀 공통적이지 않습니다. 스핑크스 색인에서 참조 된 연관에 의해 사용 된 외래 키 열에 데이터베이스 색인이 있습니까?

1

나는 이것을 위해 (다소 멍청한) BASH 기능을 썼다. 프로젝트의 루트에서 실행해야합니다.

# "rebuild" one index at a time 
function rebuildts { 
    echo "rake ts:stop" && rake ts:stop 
    echo "rake ts:configure" && rake ts:configure 
    echo "Runnning indexer" 
    indexer --config config/development.sphinx.conf $1 
    echo "rake ts:start" && rake ts:start 
} 

사용법 : rebuildts my_model_core

관련 문제