2011-01-25 4 views
1

Sphinx를 검색 엔진으로 사용하는 Wordpress 기반 웹 사이트가 있고, 사이트의 MySQL 데이터베이스에 액세스하여 매 시간마다 Sphinx 색인을 재구성합니다. 게시물이 생성되거나 편집 될 때를 제외하고는 잘 작동합니다.이 경우 색인을 다시 작성하기 전까지는 색인이 생성되지 않거나 쓸모없는 속성으로 색인이 생성됩니다.Sphinx 색인에 문서 추가하기 및 전체 재건없이 속성 수정하기

Sphinx PHP API documentation에 따르면 이미 색인이 생성 된 문서 만 업데이트 할 수 있으며 새 문서를 처음부터 다시 작성하거나 델타 1과 병합하지 않고 색인에 추가 할 수있는 방법이 없습니다. 색인에서 문서를 제거 할 수있는 방법도 없습니다.

또한 UpdateAttributes 소스 코드를 살펴보면 숫자 속성 만 업데이트 할 수 있음을 알 수 있습니다 (다른 유형은 어설 션으로 필터링 됨). 그렇기 때문에 Sphinx 개발자는 인덱스를 업데이트하는 것이 실제로 환영받지 못한다고 생각합니다.

문제를 해결하고 특정 문서에 대한 요구에 따라 모든 일정을 수정할 수있는 방법이 있습니까? 또는 스핑크스와 함께 나쁜 연습이며, 자주 업데이트되는 델타 인덱스를 사용하여 주 문서와 병합하면 업데이트 할 문서가 하나 뿐이더라도 수용 할 수있는 솔루션입니까?

미리 감사드립니다.

답변

2

Sphinx 실시간 색인 (http://sphinxsearch.com/docs/current.html#rt-overview)을 사용하면 전체 색인을 다시 작성하지 않고 하나의 문서를 기존 색인에 추가 할 수 있습니다.

+0

흥미 롭습니다. 감사합니다. 하지만 내가 아는 한 RT 인덱스를 사용하여 새 문서를 추가하고 이미 인덱싱 된 문서는 수정하지 않을 수 있습니다. RT 인덱스 내에서만 INSERT 및 DELETE 만 지원되지만 UPDATE는 지원되지 않습니다 (이전 레코드를 삭제하고 새 레코드를 수정할 수 있음). 하지만 내 주요 관심사는 디스크 색인의 오래된 문서와 개정에 관한 것입니다. 그것들을 RT 항목으로 "덮어 쓸"수 있습니까? RT 인덱스에있는 문서의 ID가 같으면 디스크에서 문서를 대체 할 것인지 필터를 병합 한 후에 검색 결과에 둘 다 표시할까요? – Yuriy

+0

REPLACE 또는 DELETE + INSERT를 사용할 수 있습니다. 어쨌든 새로운 문서는 이전 문서보다 우선합니다. –

관련 문제