다음을 통해 공유


전체 텍스트 검색에 사용할 동의어 사전 파일 구성 및 관리

적용 대상: SQL Server

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

동의어 사전 매칭은 모든 FREETEXTFREETEXTABLE 쿼리와 FORMSOF THESAURUS 절을 지정하는 모든 CONTAINSCONTAINSTABLE 쿼리에 대해 이루어집니다.

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

동의어 사전이란

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

  • 확장 집합

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

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

  • 대체 텍스트

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

  • 분음 부호 설정

    특정 유의어 사전에서 모든 검색 패턴은 물결표(~), 악센트 기호(´), 움라우트(¨)와 같은 발음 구별 기호에 민감하거나 민감하지 않습니다 (즉, 악센트 민감 또는 악센트 비민감). 예를 들어 전체 텍스트 쿼리에서 다른 패턴으로 대체할 패턴 "café"를 지정한다고 가정합니다. 동의어 사전이 악센트를 구분하지 않으면 전체 텍스트 검색 시 “café” 및 “cafe” 패턴이 바뀝니다. 동의어 사전가 악센트에 민감한 경우, 전체 텍스트 검색은 '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> 요소로 묶입니다. 이 요소 내에서 동의어당 하나씩 1개 이상의 패턴을 <pat> 요소에 지정하고, 0개 이상의 대체 단어를 <sub> 요소에 지정할 수 있습니다. 대체 집합으로 바꿀 패턴을 지정할 수 있습니다. 패턴 및 대체 집합에는 단어 또는 일련의 단어를 포함할 수 있습니다. 패턴에 대해 지정된 대체가 없으면 사용자 쿼리에서 패턴을 제거하는 효과가 있습니다.

예를 들어 패턴인 "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 online community"에 대해 FORMS OF THESAURUS 쿼리를 실행하고 다음과 같은 대체 집합이 있는 경우 "Internet Explorer" 대체 집합이 "Internet" 대체 집합보다 우선합니다. 따라서 쿼리는 "IE online community" 또는 "IE 9 online community"로 처리됩니다.

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

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

발음 설정의 XML 구조

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

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

참고 항목

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

동의어 사전 파일 편집

동의어 사전 파일(XML 파일)을 편집하여 지정된 언어에 대한 동의어 사전을 구성할 수 있습니다. 설치 중에 <xml> 컨테이너와 주석 처리된 샘플 <thesaurus> 요소만 포함된 빈 동의어 사전 파일이 설치됩니다. 동의어를 검색하는 전체 텍스트 검색 쿼리가 올바르게 작동하려면 동의어 집합을 정의하는 실제 <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자 이하여야 합니다.

  • 동의어 사전에는 확장 집합의 <sub> 항목과 교체 집합의 <pat> 요소 사이에 중복된 항목이 없어야 합니다.

참고 항목

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)