전체 텍스트 인덱싱 및 쿼리 프로세스

전체 텍스트 검색의 인덱싱 구성 요소에서는 전체 텍스트 인덱스의 초기 채우기와 인덱싱된 전체 텍스트 테이블의 데이터가 수정될 때 이 인덱스의 후속 업데이트를 처리합니다. Microsoft SQL Server 2005에서는 전체 텍스트 인덱싱 프로세스의 효율성을 높이기 위해 전체 텍스트 수집 메커니즘의 아키텍처가 개선되었으며, 이로 인해 성능이 크게 향상되었습니다.

전체 텍스트 인덱싱 프로세스

전체 텍스트 채우기(탐색이라고도 함)가 시작되면 데이터베이스 엔진은 대용량 일괄 처리 데이터를 메모리에 밀어넣고 SQL Server용 Microsoft 전체 텍스트 검색 엔진(MSFTESQL) 서비스에 인덱싱을 시작하도록 명령합니다. MSFTESQL 서비스에서는 열 또는 테이블 열에 있는 문자와 서식 있는 이진 데이터를 인덱싱합니다. 전체 텍스트 검색 엔진은 프로토콜 처리기 구성 요소를 사용하여 추가로 처리할 데이터를 메모리에서 끌어옴으로써 전체 텍스트 인덱스를 완성합니다.

인덱싱 데이터가 varbinary(max) 또는 image 열에 저장되어 있으면 IFilter 인터페이스를 구현하는 필터는 해당 데이터에 지정된 파일 형식(예: Microsoft Word)을 기준으로 텍스트를 추출합니다. 필터 구성 요소에서 varbinary(max) 또는 image 데이터를 메모리에 밀어넣는 대신 서비스 계정 Temp 디렉터리에 기록해야 하는 경우도 있습니다.

수집된 텍스트 데이터는 처리 중에 단어 분리기를 통과하여 텍스트가 개별 토큰 또는 키워드로 분리됩니다. 토큰화에 사용되는 언어는 열 수준에서 지정되거나 필터 구성 요소로 varbinary(max), image 또는 xml 데이터 내에서 식별할 수 있습니다.

추가 처리를 수행하여 의미 없는 단어를 제거하고 전체 텍스트 인덱스나 인덱스 조각에 저장되기 전에 토큰을 정규화할 수도 있습니다.

채우기가 완료되면 인덱스 조각을 하나의 마스터 전체 텍스트 인덱스로 병합하는 최종 병합 프로세스가 실행됩니다. 이렇게 하면 많은 인덱스 조각 대신 마스터 인덱스만 쿼리하면 되기 때문에 쿼리 성능이 향상되며 개선된 평가 통계를 사용하여 관련성 등급을 지정할 수 있습니다.

[!참고] 인덱스 조각을 병합할 때 많은 양의 데이터를 읽고 써야 하기 때문에 마스터 병합에 많은 I/O 사용량이 필요할 수 있지만 이로 인해 들어오는 쿼리가 차단되지는 않습니다.

전체 텍스트 쿼리 프로세스

클라이언트에서 보낸 전체 텍스트 쿼리는 SQL Server 프로세스의 SQL Server QP(쿼리 프로세서)에 전달됩니다. QP에서는 이 쿼리를 전체 텍스트 쿼리 구성 요소에 전달합니다. 그러면 이 구성 요소에서 OLE DB 명령 트리를 만들어 SQL Server용 Microsoft 전체 텍스트 검색 엔진(MSFTESQL) 서비스로 보냅니다. MSFTESQL 프로세스에서 전체 텍스트 검색 엔진 쿼리 프로세서는 단어 분리기 및 형태소 분석기뿐만 아니라 동의어 사전 및 의미 없는 단어 파일을 사용하여 쿼리를 처리합니다. MSFTESQL 서비스에서는 이 쿼리를 처리한 다음 결과 집합을 SQL Server 프로세스에 반환합니다. 이 결과 집합을 추가 처리에 사용하거나 클라이언트에 반환할 수 있습니다.

참고 항목

개념

전체 텍스트 검색 아키텍처

관련 자료

전체 텍스트 검색 개념

도움말 및 정보

SQL Server 2005 지원 받기