전체 텍스트 검색 개요

전체 텍스트 쿼리는 영어와 일본어 같은 특정 언어의 규칙을 기준으로 단어와 구에 적용되어 전체 텍스트 인덱스의 텍스트 데이터에 대해 언어 검색을 수행합니다. 전체 텍스트 쿼리에는 간단한 단어와 구 또는 여러 형식의 단어나 구가 포함될 수 있습니다.

전체 텍스트 검색은 웹 사이트에서 항목을 검색하는 e-비즈니스, 법률 데이터 리포지토리에서 판례 기록을 검색하는 법률 회사 또는 저장된 이력서 중에서 작업 설명과 일치하는 이력서를 검색하는 인사 부서와 같은 다양한 비즈니스 시나리오에 적용할 수 있습니다. 전체 텍스트 검색의 기본적인 관리 및 개발 태스크는 비즈니스 시나리오에 관계없이 동일합니다. 그러나 특정 비즈니스 시나리오에서는 비즈니스 목표를 충족시키기 위해 전체 텍스트 인덱스 및 쿼리를 조정할 수 있습니다. 예를 들어 e-비즈니스의 경우 결과 순위 지정, 회수 정확성(전체 텍스트 쿼리에서 실제로 반환하는 기존 일치 항목 수) 또는 여러 언어 지원보다 성능 최대화가 더 중요할 수 있고 법률 회사의 경우 일치하는 모든 항목 반환(정보의 전체 회수)이 가장 중요한 고려 사항일 수 있습니다.

전체 텍스트 검색용 데이터베이스 구성 방법 개요

모든 시나리오에서 데이터베이스 관리자는 다음과 같은 기본 단계를 수행하여 전체 텍스트 검색용 데이터베이스에서 테이블 열을 구성해야 합니다.

  1. 전체 텍스트 카탈로그를 만듭니다.

  2. 검색할 각 테이블에서 다음을 수행하여 전체 텍스트 인덱스를 만듭니다.

    1. 전체 텍스트 인덱스에 포함할 각 텍스트 열을 식별합니다.

    2. 지정된 열에 이진 데이터(varbinary(max) 또는 image 데이터)로 저장된 문서가 포함되어 있는 경우 인덱싱되는 열에 있는 각 문서의 유형을 식별하는 테이블 열(유형 열)을 지정해야 합니다.

    3. 전체 텍스트 검색에서 열에 있는 문서에 사용할 언어를 지정합니다.

    4. 기본 테이블과 이 테이블에 속한 열의 변경 내용을 추적하기 위해 전체 텍스트 인덱스에 사용할 변경 내용 추적 메커니즘을 선택합니다.

전체 텍스트 검색은 단어 분리기, 형태소 분석기, 중지 단어(의미 없는 단어라고도 함)가 포함된 중지 목록, 동의어 사전 파일 등의 언어 구성 요소를 사용하여 여러 언어를 지원합니다. 동의어 사전 파일과 경우에 따라서는 중지 목록은 데이터베이스 관리자의 구성이 필요합니다. 지정된 동의어 사전 파일은 해당 언어를 사용하는 모든 전체 텍스트 인덱스를 지원하고 지정된 중지 목록은 전체 텍스트 인덱스에 원하는 만큼 연결할 수 있습니다.

자세한 내용은 전체 텍스트 검색 관리를 참조하십시오.

전체 텍스트 쿼리 개요

전체 텍스트 인덱스에 열을 추가한 후에는 응용 프로그램과 사용자가 해당 열의 텍스트에 대해 전체 텍스트 쿼리를 실행할 수 있습니다. 이러한 쿼리는 다음 중 하나를 검색할 수 있습니다.

  • 하나 이상의 특정 단어 또는 구(단순 단어)

  • 단어가 특정 텍스트로 시작하는 단어나 구(접두사 단어)

  • 특정 단어의 굴절형(생성 단어)

  • 다른 단어나 구와 근접한 단어나 구(근접 단어)

  • 특정 단어의 동의어 형태(동의어 사전)

  • 가중치를 사용하는 단어나 구(가중치 단어)

모든 전체 텍스트 쿼리는 일부 Transact-SQL 조건자(CONTAINS 및 FREETEXT) 및 함수(CONTAINSTABLE 및 FREETEXTTABLE) 집합을 사용합니다. 전체 텍스트 쿼리의 정확한 구조는 다음과 같이 지정된 비즈니스 시나리오의 검색 목표에 따라 달라집니다.

  • e-비즈니스—웹 사이트에서 제품 검색:

    SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
    
  • 채용 시나리오—SQL Server를 사용하여 작업한 경험이 있는 지원자 검색:

    SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
    

자세한 내용은 전체 텍스트 검색을 사용하여 SQL Server 쿼리를 참조하십시오.

LIKE와 전체 텍스트 검색 비교

전체 텍스트 검색과 달리 LIKE Transact-SQL 조건자는 문자 패턴에 대해서만 적용됩니다. 또한 LIKE 조건자는 서식 있는 이진 데이터를 쿼리하는 데 사용할 수도 없습니다. 특히 구조화되지 않은 많은 텍스트 데이터에 대한 LIKE 쿼리는 동일한 데이터에 대한 전체 텍스트 쿼리보다 훨씬 느립니다. 수백만 개의 텍스트 데이터 행에 대한 LIKE 쿼리는 결과가 반환되기까지 몇 분이 걸릴 수 있지만 동일한 데이터에 대한 전체 텍스트 쿼리는 반환되는 행 수에 따라 몇 초 내에 완료됩니다.