2009-11-05 2 views
2

전체 텍스트 검색을 설정할 때 인덱스를 다시 채울 시간/요일을 선택할 수있는 옵션을 제공합니다. C# 코드? 그렇다면 어떻게해야할까요? 인덱스를 새로 고치려면 C#에서 SQL 코드를 실행해야합니까?SQL Server 2008의 전체 텍스트 검색 새로 고침 인덱스

또한 인덱스를 다시 채우고 새 레코드를 추가하지 않으면 FTS 쿼리를 사용하여 새 레코드가 계속 표시됩니까? 그러나 더 느린가? 아니면 내가 다시 색인을 생성하지 않으면 그들은 전혀 오지 않을 것인가?

답변

6

편집 : 현재 FT 인덱스를 유지하는 두 가지 방법이 있다는 것을 조심 :

  • 에 "업데이트"그 어떤 적절한 주어, 개별 레코드에 대한 변경 (이 당신을 위해 자동으로 수행됩니다 추적하는 데 필요 "변경 추적"설정이지만 약간의 오버 헤드가 발생합니다.
  • "다시 popluate"즉, 완전한 색인을 새로 작성하는 것입니다. 인덱스 (아마 2008 비록?)

    채워야하는 동안 전자의 방법은 +/- 기본 목록 이용자 계속 서비스에 투명

는 후자의 서비스의 부분적인 손실을 의미

질문에 대한 업데이트 또는 다시 채우기 유형이 어떤 것인지 명확하지 않으므로 아래 응답은 일반적인 답변입니다.

1) 예! 전체 텍스트 인덱스 다시 채우기 (또는 업데이트)는 다음과 같은 일반 TSQL 쿼리를 사용하여 프로그래밍 방식으로을 수행 할 수 있습니다. 이러한 쿼리는 OLEDB 또는 ODBC를 사용하여 C# 코드에서 호출 할 수 있습니다.

ALTER FULLTEXT INDEX ON myCatalog START START FULL POPULATION; -- for full (re-)population 
ALTER FULLTEXT INDEX ON myCatalog START UPDATE POPULATION; -- for update 

2) 예, FTS의 지수는 실시간 가까이에서 데이터베이스에 변경 사항을 반영은, 는 설정이 적절하다 한한다.
"변경 내용 추적"에 대한 FT 인덱스를 설정하여 인덱스를 최신 상태로 유지할 수 있도록해야합니다. 이것이 필요한 조건입니다. 변경 추적에서 가져온 변경된 레코드와 새 레코드의 목록을 사용하면 SQL은 FT 인덱스를 "실시간"으로 업데이트 할 수 있습니다 (이 인덱스는 데이터베이스의 업데이트보다 실시간으로 약간 뒤에 있습니다. to FT 인덱스는 약간 버퍼링되며이 유형의 업데이트는 일반적으로 서버의 CPU 사용량과 관련하여 우선 순위가 낮기 때문에 "수동으로"수행 할 수 있습니다 (수동으로 따옴표로 묶을 수 있음) 적절한 수동 업데이트는 "자동"일 수 있습니다.)

자세한 내용은 Microsoft technet article을 참조하십시오. (FT 지수 등의 개요는이 기사 하단의 링크를 확인하십시오.)

관련 문제