전체 텍스트 검색을 위한 동의어 사전 파일 구성 및 관리

적용 대상:SQL Server

SQL Server 전체 텍스트 검색 쿼리는 전체 텍스트 검색 동의어 사전을 사용하여 사용자 지정 용어의 동의어를 검색 할 수 있습니다. 각 동의어 사전은 특정 언어에 대한 동의어 집합을 정의합니다. 전체 텍스트 데이터에 맞게 조정된 동의어 사전을 개발하면 해당 데이터에 대한 전체 텍스트 쿼리의 범위를 효과적으로 넓힐 수 있습니다.

동의어 사전 일치는 모든 FREETEXTFREETEXTABLE 쿼리 및 절을 지정 FORMSOF THESAURUS 하는 CONTAINSCONTAINSTABLE 쿼리에 대해 발생합니다.

전체 텍스트 검색 동의어 사전은 XML 텍스트 파일입니다.

동의어 사전의 내용

전체 텍스트 검색 쿼리가 지정된 언어로 동의어를 찾기 전에 해당 언어에 대한 동의어 사전 매핑(즉, 동의어)을 정의해야 합니다. 각 동의어 사전은 다음을 정의하도록 수동으로 구성해야 합니다.

  • 확장 집합

    확장 집합은 전체 텍스트 쿼리에 의해 서로 대체되는 "writer", "author" 및 "journalist"와 같은 동의어 그룹을 포함합니다. 확장 집합의 동의어에 대한 일치 항목이 포함된 쿼리는 확장 집합의 다른 모든 동의어를 포함하도록 확장됩니다.

    자세한 내용은 이 항목의 뒷부분에 있는 확장 집합의 XML 구조를 참조하세요.

  • 대체 집합

    교체 집합에는 대체 집합으로 바꿀 텍스트 패턴이 포함되어 있습니다. 예를 들어 이 항목의 뒷부분에 있는 대체 집합의 XML 구조 섹션을 참조하세요.

  • 분음 부호 설정

    지정된 동의어 사전의 경우 모든 검색 패턴은 물결표(), 급성 악센트 표시(') 또는 움라우트(~)(즉, 악센트 구분 또는 악센트 구분 안 함)와 같은 음색 표시에 민감하거나 민감하지 않습니다. 예를 들어 전체 텍스트 쿼리에서 다른 패턴으로 대체할 패턴 "café"를 지정한다고 가정합니다. 동의어 사전이 악센트를 구분하지 않는 경우 전체 텍스트 검색은 패턴 "café"와 "café"를 대체합니다. 동의어 사전이 악센트를 구분하는 경우 전체 텍스트 검색은 패턴 "café"만 대체합니다. 기본적으로 동의어 사전은 악센트를 구분하지 않습니다.

기본 동의어 사전 파일

SQL Server는 지원되는 각 언어에 대해 하나씩 XML 동의어 사전 파일 집합을 제공합니다. 이러한 파일은 기본적으로 비어 있습니다. 여기에는 모든 SQL Server 동의어 사전과 주석 처리된 샘플 동의어 사전에서 공통적으로 사용되는 최상위 XML 구조만 포함됩니다.

동의어 사전 파일의 위치

동의어 사전 파일의 기본 위치는 다음과 같습니다.

<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\

이 기본 위치에는 다음 파일이 포함됩니다.

  • 언어별 동의어 사전 파일

    설치 프로그램은 위의 위치에 빈 동의어 사전 파일을 설치합니다. 지원되는 각 언어에 대해 별도의 파일이 제공됩니다. 시스템 관리자는 이러한 파일을 사용자 지정할 수 있습니다.

    동의어 사전 파일의 기본 파일 이름은 다음 형식을 사용합니다.

    'ts' + <three-letter language-abbreviation> + '.xml'

    지정된 언어에 대한 동의어 사전 파일의 이름은 레지스트리에서 다음 값으로 지정됩니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>

  • 전역 동의어 사전 파일

    빈 전역 동의어 사전 파일인 tsGlobal.xml입니다.

동의어 사전 파일의 위치 변경

해당 레지스트리 키를 변경하여 동의어 사전 파일의 위치와 이름을 변경할 수 있습니다. 각 언어에 대해 동의어 사전 파일의 위치는 레지스트리의 다음 값에 지정됩니다.

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance name>\MSSearch\Language\<language-abbreviation>\TsaurusFile

전역 동의어 사전 파일은 LCID 0을 사용하는 중립 언어에 해당합니다. 이 값은 관리자만 변경할 수 있습니다.

전체 텍스트 쿼리에서 동의어 사전을 사용하는 방법

동의어 사전 쿼리는 언어별 동의어 사전과 전역 동의어 사전을 모두 사용합니다.

  1. 먼저 쿼리는 언어별 파일을 조회하고 처리를 위해 로드합니다(이미 로드되지 않은 경우). 확장 집합에 지정된 언어별 동의어와 동의어 사전 파일의 대체 집합 규칙을 포함하도록 쿼리가 확장됩니다.
  2. 그런 다음 전역 동의어 사전에서 이러한 단계를 반복합니다. 그러나 언어별 동의어 사전 파일에서 용어가 이미 일치 항목의 일부인 경우 이 용어는 전역 동의어 사전에서 일치시킬 수 없습니다.

동의어 사전 파일의 구조

각 동의어 사전 파일은 ID가 Microsoft Search Thesaurus인 XML 컨테이너와, 예제 동의어 사전을 포함하는 주석(<!-- ... -->)을 정의합니다. 동의어 사전은 발음 설정, 확장 집합 및 대체 집합을 정의하는 자식 요소의 샘플을 포함하는 요소에 정의 <thesaurus> 됩니다.

일반적인 빈 동의어 사전 파일에는 다음 XML 텍스트가 포함됩니다.

<XML ID="Microsoft Search Thesaurus">  
  
<!--  Commented out  
  
    <thesaurus xmlns="x-schema:tsSchema.xml">  
<diacritics_sensitive>0</diacritics_sensitive>  
        <expansion>  
            <sub>Internet Explorer</sub>  
            <sub>IE</sub>  
            <sub>IE5</sub>  
        </expansion>  
        <replacement>  
            <pat>NT5</pat>  
            <pat>W2K</pat>  
            <sub>Windows 2012</sub>  
        </replacement>  
        <expansion>  
            <sub>run</sub>  
            <sub>jog</sub>  
        </expansion>  
    </thesaurus>  
-->  
</XML>  

확장 집합의 XML 구조

각 확장 집합은 <expansion> 요소로 묶입니다. 이 요소 내에서 요소에 <sub> 하나 이상의 대체를 지정합니다. 확장 집합에서 서로 동의어인 대체 그룹을 지정할 수 있습니다.

예를 들어 "writer", "author" 및 "journalist" 대체 단어를 동의어로 처리하도록 확장 섹션을 편집할 수 있습니다. 한 대체에 일치하는 항목이 포함된 전체 텍스트 검색 쿼리는 확장 집합에 지정된 다른 모든 대체를 포함하도록 확장됩니다. 따라서 앞의 예제에서 "author"라는 단어에 대한 FORMS OF THESAURUS 또는 FREETEXT 쿼리를 실행할 때 전체 텍스트 검색은 "writer" 및 "journalist"라는 단어가 포함된 검색 결과도 반환합니다.

위의 예제에서는 확장 집합 섹션이 다음과 같이 표시됩니다.

<expansion>  
        <sub>writer</sub>  
        <sub>author</sub>  
        <sub>journalist</sub>  
</expansion>  

대체 집합의 XML 구조

각 교체 집합은 <replacement> 요소로 묶입니다. 이 요소 내에서 요소에 <pat> 하나 이상의 패턴을 지정하고 요소에서 <sub> 0개 이상의 대체를 동의어당 하나씩 지정할 수 있습니다. 대체 집합으로 바꿀 패턴을 지정할 수 있습니다. 패턴 및 대체 집합에는 단어 또는 일련의 단어를 포함할 수 있습니다. 패턴에 대해 지정된 대체가 없으면 사용자 쿼리에서 패턴을 제거하는 효과가 있습니다.

예를 들어 패턴인 "Win8"에 대한 쿼리를 대체인 "Windows Server 2012" 또는 "Windows 8.0"으로 바꾸려고 한다고 가정합니다. "Win8"에 대한 전체 텍스트 쿼리를 실행하는 경우 전체 텍스트 검색은 "Windows Server 2012" 또는 "Windows 8.0"이 포함된 검색 결과만 반환합니다. "Win8"을 포함하는 결과를 반환하지 않습니다. "Win8" 패턴이 "Windows Server 2012" 및 "Windows 8.0" 패턴으로 "대체"되었기 때문입니다.

다음은 위 예에 대한 교체 집합 섹션을 나타낸 것입니다.

<replacement>  
        <pat>Win8</pat>  
        <sub>Windows Server 2012</sub>  
        <sub>Windows 8.0</sub>  
</replacement>  

비슷한 패턴이 일치하는 두 개의 대체 집합이 있는 경우 둘 중 더 오래 우선합니다. 예를 들어 "Internet Explorer 온라인 커뮤니티"에 대해 FORMS OF THESAURUS 쿼리를 실행하고 다음과 같은 대체 집합이 있는 경우 "Internet Explorer" 대체 집합이 "인터넷" 대체 집합보다 우선합니다. 따라서 쿼리는 "IE 온라인 커뮤니티" 또는 "IE 9 온라인 커뮤니티"로 처리됩니다.

<replacement>  
         <pat>Internet</pat>  
         <sub>intranet</sub>  
</replacement>  

<replacement>  
         <pat>Internet Explorer</pat>  
         <sub>IE</sub>  
         <sub>IE 9</sub>  
</replacement>  

발음 설정의 XML 구조

동의어 사전의 발음 설정은 단일 <diacritics_sensitive> 요소에 지정됩니다. 이 요소는 다음과 같이 악센트 구분을 제어하는 정수 값을 포함합니다.

Diacritics 설정 XML
악센트 구분 안 함 0 <diacritics_sensitive>0</diacritics_sensitive>
악센트 구분 1 <diacritics_sensitive>1</diacritics_sensitive>

참고 항목

이 설정은 파일에서 한 번만 적용될 수 있으며 해당 파일의 모든 검색 패턴에 적용됩니다. 개별 패턴에 대해 이 설정을 지정할 수 없습니다.

동의어 사전 파일 편집

동의어 사전 파일(XML 파일)을 편집하여 지정된 언어에 대한 동의어 사전을 구성할 수 있습니다. 설치하는 동안 컨테이너와 주석 처리된 샘플 <thesaurus> 요소만 <xml> 포함된 빈 동의어 사전 파일이 설치됩니다. 동의어를 찾는 전체 텍스트 검색 쿼리가 제대로 작동하려면 동의어 집합을 정의하는 실제 <thesaurus> 요소를 만들어야 합니다. 확장 집합 및 대체 집합의 두 가지 형식을 정의할 수 있습니다.

동의어 사전 파일 편집

  1. 동의어 사전 파일을 메모장 또는 다른 텍스트 편집기에서 엽니다.

  2. 동의어 사전 파일을 처음 편집하는 경우 파일의 시작 및 끝 부분에서 각각 다음 주석 줄을 제거합니다.

    <!--Commented out  
    -->  
    
  3. 대체 집합 또는 확장 집합을 추가, 수정 또는 삭제합니다.

  4. 파일을 저장하고 메모장을 닫습니다.

  5. sp_fulltext_load_thesaurus_file 사용하여 동의어 사전 파일의 언어에 해당하는 LCID(로컬 식별자)를 지정하여 동의어 사전 파일의 내용을 tempdb에 로드합니다. 예를 들어 영어 동의어 사전 파일 tsenu.xml의 경우 해당하는 LCID는 1033입니다.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

동의어 사전 파일 편집에 대한 권장 사항

동의어 사전 파일의 항목에는 특수 문자를 사용하지 않는 것이 좋습니다. 특수 문자와 관련하여 단어 분리기의 동작에 미묘한 부분이 있기 때문입니다. 동의어 사전 항목에 특수 문자가 포함된 경우 해당 항목과 함께 사용되는 단어 분리기는 전체 텍스트 쿼리에 미묘한 동작 영향을 줄 수 있습니다.

전체 텍스트 인덱스에서 중지 단어가 생략되므로 항목에 중지 단어가 포함되지 않는 것이 좋습니다 <sub> . 쿼리는 동의어 사전 파일의 <sub> 항목을 포함하도록 확장되므로 <sub> 항목에 중지 단어가 포함되어 있으면 쿼리 크기가 불필요하게 커지게 됩니다.

동의어 사전 파일 편집 제한 사항

동의어 사전 파일 편집에는 다음과 같은 제한 사항이 적용됩니다.

  • 시스템 관리자만 동의어 사전 파일을 업데이트, 수정 또는 삭제할 수 있습니다.

  • 텍스트 편집기 도구를 사용하여 동의어 사전 파일을 편집할 때는 파일을 유니코드 형식으로 저장해야 하며 바이트 순서 표시를 지정해야 합니다.

  • 동의어 사전 항목은 비어 있거나 빈 문자열로 단어 분리될 수 없습니다.

  • 동의어 사전 파일의 구는 512자 이하여야 합니다.

  • 동의어 사전은 확장 집합의 항목과 <pat> 대체 집합의 요소 중 <sub> 중복 항목을 포함하지 않아야 합니다.

참고 항목

CONTAINS(Transact-SQL)
CONTAINSTABLE(Transact-SQL)
FREETEXT(Transact-SQL)
FREETEXTTABLE(Transact-SQL)
sp_fulltext_load_thesaurus_file(Transact-SQL)
sys.dm_fts_parser(Transact-SQL)