전체 텍스트 검색에 사용할 동의어 사전 파일 구성 및 관리Configure and Manage Thesaurus Files for Full-Text Search

SQL ServerSQL Server 전체 텍스트 검색 쿼리는 전체 텍스트 검색 동의어 사전을 사용하여 사용자 지정 용어의 동의어를 검색할 수 있습니다. Full-Text Search queries can search for synonyms of user-specified terms through the use of a Full-Text Search thesaurus. 각 동의어 사전은 특정 언어에 대한 동의어 집합을 정의합니다.Each thesaurus defines a set of synonyms for a specific language. 전체 텍스트 데이터에 맞게 동의어 사전을 개발하면 해당 데이터에 대한 전체 텍스트 쿼리의 범위를 효과적으로 넓힐 수 있습니다.By developing a thesaurus tailored to your full-text data, you can effectively broaden the scope of full-text queries on that data.

동의어 사전 검색은 모든 FREETEXTFREETEXTABLE 쿼리와 FORMSOF THESAURUS 절을 지정하는 CONTAINSCONTAINSTABLE 쿼리에 대해 수행됩니다.Thesaurus matching occurs for all FREETEXT and FREETEXTABLE queries and for any CONTAINS and CONTAINSTABLE queries that specify the FORMSOF THESAURUS clause.

전체 텍스트 검색 동의어 사전은 XML 텍스트 파일입니다.A Full-Text Search thesaurus is an XML text file.

동의어 사전의 기능 What's in a thesaurus

전체 텍스트 검색 쿼리가 지정된 언어에서 동의어를 찾을 수 있도록 하려면 해당 언어에 대한 동의어 사전 매핑(즉, 동의어)을 정의해야 합니다.Before full-text search queries can look for synonyms in a given language, you have to define thesaurus mappings (that is, synonyms) for that language. 각 동의어 사전은 다음을 정의하도록 수동으로 구성해야 합니다.Each thesaurus must be manually configured to define the following:

  • 확장 집합Expansion set

    확장 집합은 전체 텍스트 쿼리에 의해 서로 대체되는 "writer", "author" 및 "journalist"와 같은 동의어 그룹을 포함합니다.An expansion set contains a group of synonyms such as "writer", "author", and "journalist" that are substituted for one another by a full-text query. 확장 집합에 동의어에 대한 일치 항목이 있는 쿼리는 확장 집합의 다른 모든 동의어를 포함하도록 확장됩니다.Queries that contain a match for any synonym in an expansion set are expanded to include every other synonym in the expansion set.

    자세한 내용은 이 항목의 뒷부분에 나오는 확장 집합의 XML 구조를 참조하세요.For more information, see XML Structure of an Expansion Set later in this topic.

  • 교체 집합Replacement set

    교체 집합에는 대체 집합으로 바꿀 텍스트 패턴이 포함되어 있습니다.A replacement set contains a text pattern to be replaced by a substitution set. 예를 보려면 이 항목의 뒷부분에 나오는교체 집합의 XML 구조 섹션을 참조하세요.For an example, see the section XML Structure of a Replacement Set later in this topic.

  • 분음 부호 설정Diacritics setting

    지정된 동의어 사전에 대해 모든 검색 패턴은 물결표(~), 양음 악센트 표시(´) 또는 움라우트(¨) 등의 분음 부호를 구분하거나 구분하지 않습니다(즉, 악센트 구분 또는 악센트 구분 안 함).For a given thesaurus, all search patterns are either sensitive or insensitive to diacritical marks such as a tilde (~), acute accent mark (´), or umlaut (¨) (that is, accent sensitive or accent insensitive). 예를 들어 전체 텍스트 쿼리에서 "café" 패턴을 다른 패턴으로 바꾸도록 지정한다고 가정해 보겠습니다.For example, suppose you specify the pattern "café" to be replaced by other patterns in a full-text query. 동의어 사전이 악센트를 구분하지 않으면 전체 텍스트 검색 시 "café" 및 "cafe" 패턴이 바뀝니다.If the thesaurus is accent-insensitive, full-text search replaces the patterns "café" and "cafe". 동의어 사전이 악센트를 구분하면 전체 텍스트 검색 시 "café" 패턴만 바뀝니다.If the thesaurus is accent-sensitive, full-text search replaces only the pattern "café". 기본적으로 동의어 사전은 악센트를 구분하지 않습니다.By default, a thesaurus is accent-insensitive.

기본 동의어 사전 파일 Default thesaurus files

SQL ServerSQL Server 는 지원되는 각 언어당 하나의 XML 동의어 사전 파일을 제공합니다. provides a set of XML thesaurus files, one for each supported language. 이러한 파일은 기본적으로 비어 있습니다.These files are essentially empty. 파일에는 모든 SQL ServerSQL Server 동의어 사전에 공통적인 최상위 XML 구조와 주석 처리된 예제 동의어 사전만 포함되어 있습니다.They contain only the top-level XML structure that is common to all SQL ServerSQL Server thesauruses and a commented-out sample thesaurus.

동의어 사전 파일의 위치 Location of thesaurus files

동의어 사전 파일의 기본 위치는 다음과 같습니다.The default location of the thesaurus files is:

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

이 기본 위치에는 다음 파일이 포함되어 있습니다.This default location contains the following files:

  • 언어별 동의어 사전 파일Language-specific thesaurus files

    설치 프로그램은 위의 위치에 빈 동의어 사전 파일을 설치합니다.Setup installs empty thesaurus files in the above location. 지원되는 각 언어에 대해 별도의 파일이 제공됩니다.A separate file is provided for each supported language. 시스템 관리자는 이러한 파일을 사용자 지정할 수 있습니다.A system administrator can customize these files.

    동의어 사전 파일의 기본 파일 이름은 다음 형식을 사용합니다.The default file names of the thesaurus files use following format:

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

    특정 언어에 대한 동의어 사전 파일의 이름은 레지스트리의 다음 값에 지정됩니다.The name of the thesaurus file for a given language is specified in the registry in the following value:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>  
    
  • 전역 동의어 사전 파일The global thesaurus file

    빈 전역 동의어 사전 파일인 tsGlobal.xmlAn empty global thesaurus file, tsGlobal.xml.

동의어 사전 파일의 위치 변경Change the location of a thesaurus file

레지스트리 키를 변경하여 동의어 사전 파일의 위치와 이름을 바꿀 수 있습니다.You can change the location and names of a thesaurus file by changing its registry key. 각 언어에 대해 동의어 사전 파일의 위치는 레지스트리의 다음 값에 지정됩니다.For each language, the location of the thesaurus file is specified in the following value in the registry:

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

전역 동의어 사전 파일은 LCID 0의 중립 언어에 해당합니다.The global thesaurus file corresponds to the Neutral language with LCID 0. 이 값은 관리자만 변경할 수 있습니다.This value can be changed by administrators only.

전체 텍스트 쿼리에서 동의어 사전을 사용하는 방법 How full-text queries use the thesaurus

동의어 사전 쿼리는 언어별 동의어 사전과 전역 동의어 사전을 모두 사용합니다.A thesaurus query uses both a language-specific thesaurus and the global thesaurus.

  1. 이 쿼리는 먼저 언어별 파일을 조회한 다음 이미 로드되지 않은 경우 처리를 위해 해당 파일을 로드합니다.First, the query looks up the language-specific file and loads it for processing (unless it is already loaded). 이 쿼리는 동의어 사전 파일의 확장 집합 규칙과 교체 집합 규칙으로 지정된 언어별 동의어를 포함하도록 확장됩니다.The query is expanded to include the language-specific synonyms specified by the expansion set and replacement set rules in the thesaurus file.
  2. 그런 다음 전역 동의어 사전에 대해 이러한 단계가 반복됩니다.These steps are then repeated for the global thesaurus. 그러나 용어가 이미 언어별 동의어 사전 파일에서 일치 항목의 일부인 경우 해당 용어는 전역 동의어 사전에서 일치 항목으로 적합하지 않습니다.However, if a term is already part of a match in the language specific thesaurus file, the term is ineligible for matching in the global thesaurus.

동의어 사전 파일의 구조 Structure of a thesaurus file

각 동의어 사전 파일은 ID가 Microsoft Search Thesaurus인 XML 컨테이너와, 예제 동의어 사전을 포함하는 주석( <!--Each thesaurus file defines an XML container whose ID is Microsoft Search Thesaurus, and a comment, <!-- -->)을 정의합니다.-->, that contains a sample thesaurus. 동의어 사전은 분음 부호 설정, 확장 집합, 교체 집합을 정의하는 자식 요소의 샘플이 포함된 <thesaurus> 요소에 정의됩니다.The thesaurus is defined in a <thesaurus> element that contains samples of the child elements that define the diacritics setting, expansion sets, and replacement sets.

일반적인 빈 동의어 사전 파일에는 다음과 같은 XML 텍스트가 포함되어 있습니다.A typical empty thesaurus file contains the following XML text:

<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 구조 XML structure of an expansion set

각 확장 집합은 <expansion> 요소로 묶입니다.Each expansion set is enclosed within an <expansion> element. 이 요소 내에서 <sub> 요소에 하나 이상의 대체 단어를 지정합니다.Within this element, you specify one or more substitutions in a <sub> element. 확장 집합에 서로의 동의어인 대체 그룹을 지정할 수 있습니다.In the expansion set, you can specify a group of substitutions that are synonyms of each other.

예를 들어 "writer", "author" 및 "journalist" 대체 단어를 동의어로 처리하도록 확장 섹션을 편집할 수 있습니다.For example, you can edit the expansion section to treat the substitutions "writer", "author", and "journalist" as synonyms. 하나의 대체 집합에 일치하는 항목이 있는 전체 텍스트 검색 쿼리는 확장 집합에 지정된 다른 모든 대체 단어를 포함하도록 확장됩니다.full-text search queries that contain matches in one substitution are expanded to include all other substitutions specified in the expansion set. 따라서 위 예에서 "author"라는 단어에 대해 FORMS OF THESAURUS 또는 FREETEXT 쿼리를 실행하면 전체 텍스트 검색에 "writer" 및 "journalist"라는 단어를 포함하는 검색 결과가 반환됩니다.Therefore, in the preceding example, when you issue a FORMS OF THESAURUS or a FREETEXT query for the word "author", full-text search also returns search results containing the words "writer" and "journalist".

다음은 위 예에 대한 확장 집합 섹션을 나타낸 것입니다.This is what the expansion set section would look like for the above example:

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

교체 집합의 XML 구조 XML structure of a replacement set

각 교체 집합은 <replacement> 요소로 묶입니다.Each replacement set is enclosed within a <replacement> element. 이 요소 내에서 동의어당 하나씩 1개 이상의 패턴을 <pat> 요소에 지정하고, 0개 이상의 대체 단어를 <sub> 요소에 지정할 수 있습니다.Within this element you can specify one or more patterns in a <pat> element and zero or more substitutions in <sub> elements, one per synonym. 대체 집합으로 바꿀 패턴을 지정할 수 있습니다.You can specify a pattern to be replaced by a substitution set. 패턴 및 대체 집합에는 단어 또는 일련의 단어를 포함할 수 있습니다.Patterns and substitutions can contain a word, or a sequence of words. 패턴에 지정된 대체 단어가 없는 경우 사용자 쿼리에서 해당 패턴이 제거됩니다.If there is no substitution specified for a pattern, it has the effect of removing the pattern from the user query.

예를 들어 'Win8' 패턴을 'Windows Server 2012' 또는 'Windows 8.0' 대체 단어로 바꾸는 쿼리를 원하는 경우For example, suppose you want queries for "Win8", the pattern, to be replaced by "Windows Server 2012" or "Windows 8.0", the substitutions. 'Win8'에 대해 전체 텍스트 쿼리를 실행하면 전체 텍스트 검색에 'Server 2012' 또는 'Windows 8.0'd\을 포함하는 검색 결과만 반환됩니다.If you run a full-text query for "Win8", full-text search only returns search results containing "Windows Server 2012" or "Windows 8.0". 'Win8'을 포함하는 결과는 반환되지 않습니다.It does not return results containing "Win8". 이는 'Win8' 패턴이 'Windows Server 2012' 및 'Windows 8.0' 패턴으로 '바뀌었기' 때문입니다.This is because the pattern "Win8" has been "replaced" by the patterns "Windows Server 2012" and "Windows 8.0".

다음은 위 예에 대한 교체 집합 섹션을 나타낸 것입니다.This is what the replacement set section would look like for the above example:

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

패턴이 유사하게 일치하는 두 개의 교체 집합이 있는 경우 두 개 중 더 긴 것이 우선적으로 적용됩니다.If you have two replacement sets with similar patterns being matched, the longer of the two takes precedence. 예를 들어 "Internet Explorer online community"에 대해 FORMS OF THESAURUS 쿼리를 실행하고 다음과 같은 교체 집합이 있는 경우 "Internet Explorer" 교체 집합이 "Internet" 교체 집합보다 우선적으로 적용됩니다.For example, if you run a FORMS OF THESAURUS query for "Internet Explorer online community" and you have the following replacement sets, the "Internet Explorer" replacement set takes precedence over the "Internet" replacement set. 따라서 쿼리가 "IE online community" 또는 "IE 9 online community"로 처리됩니다.The query will therefore be processed as "IE online community" or "IE 9 online community".

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

and

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

분음 부호 설정의 XML 구조XML structure of the diacritics setting

동의어 사전의 분음 부호 설정은 단일 <diacritics_sensitive> 요소에 지정됩니다.The diacritics setting of a thesaurus is specified in a single <diacritics_sensitive> element. 이 요소는 다음과 같이 악센트 구분 여부를 제어하는 정수 값을 포함합니다.This element contains an integer value that controls accent sensitivity, as follows:

분음 부호 설정Diacritics Setting Value XMLXML
악센트 구분 안 함Accent insensitive 00 <diacritics_sensitive>0</diacritics_sensitive>
악센트 구분Accent sensitive 11 <diacritics_sensitive>1</diacritics_sensitive>

참고

이 설정은 파일에서 한 번만 적용될 수 있으며 해당 파일의 모든 검색 패턴에 적용됩니다.This setting can only be applied one time in the file, and it applies to all search patterns in the file. 개별 패턴에 대해서는 이 설정을 지정할 수 없습니다.This setting cannot be specified for individual patterns.

동의어 사전 파일 편집 Edit a thesaurus file

지정된 언어에 대한 동의어 사전은 해당 동의어 사전 파일(XML 파일)을 편집하여 구성할 수 있습니다.You can configure the thesaurus for a given language by editing its thesaurus file (an XML file). 설치 중에 <xml> 컨테이너와 주석 처리된 샘플 <thesaurus> 요소만 포함된 빈 동의어 사전 파일이 설치됩니다.During setup, empty thesaurus files that contain only the <xml> container and a commented-out sample <thesaurus> element are installed. 동의어를 검색하는 전체 텍스트 검색 쿼리가 올바르게 작동하려면 동의어 집합을 정의하는 실제 <thesaurus 요소를 만들어야 하는데,In order for full-text search queries that look for synonyms to work properly, you have to create an actual <thesaurus> element that defines a set of synonyms. 확장 집합과 교체 집합의 두 형식으로 정의할 수 있습니다.You can define two forms of synonyms, expansion sets and replacement sets.

동의어 사전 파일 편집Edit a thesaurus file

  1. 동의어 사전 파일을 메모장이나 다른 텍스트 편집기에서 엽니다.Open the thesaurus file in Notepad or another text editor.

  2. 동의어 사전 파일을 처음 편집하는 경우 파일의 시작 및 끝 부분에서 각각 다음 주석 줄을 제거합니다.If you are editing the thesaurus file for the first time, remove the following comment lines at the beginning and end of the file, respectively:

    <!--Commented out  
    -->  
    
  3. 교체 집합이나 확장 집합을 추가, 수정 또는 삭제합니다.Add, modify, or delete a replacement set or an expansion set.

  4. 파일을 저장하고 메모장을 닫습니다.Save the file and close Notepad.

  5. 동의어 사전 파일의 언어에 해당하는 LCID(로컬 식별자)를 지정하고 sp_fulltext_load_thesaurus_file 을 사용하여 동의어 사전 파일의 내용을 tempdb에 로드할 수 있습니다.Use sp_fulltext_load_thesaurus_file to load the content of the thesaurus file into tempdb, specifying the local identifier (LCID) that corresponds to the language of the thesaurus file. 예를 들어 영어 동의어 사전 파일 tsenu.xml의 경우 해당하는 LCID는 1033입니다.For example, for the English thesaurus file, tsenu.xml, the corresponding LCID is 1033.

    USE AdventureWorks;  
    EXEC sys.sp_fulltext_load_thesaurus_file 1033;  
    GO
    

동의어 사전 파일 편집 관련 권장 사항Recommendations for editing thesaurus files

동의어 사전 파일의 항목에는 특수 문자를 사용하지 않는 것이 좋습니다.We recommend that entries in the thesaurus file contain no special characters. 특수 문자와 관련하여 단어 분리기의 동작에 미묘한 부분이 있기 때문입니다.This is because word breakers have subtle behaviors with respect to special characters. 동의어 사전 항목에 특수 문자가 포함된 경우 해당 항목과 함께 사용된 단어 분리기는 전체 텍스트 쿼리의 동작에 미묘한 영향을 미칠 수 있습니다.If a thesaurus entry contains any special characters, word breakers used in combination with that entry can have subtle behavioral implications for a full-text query.

중지 단어는 전체 텍스트 인덱스에서 생략되므로 <sub> 항목에는 중지 단어를 포함하지 않는 것이 좋습니다.We recommend that <sub> entries contain no stopwords since stopwords are omitted from the full-text index. 쿼리는 동의어 사전 파일의 <sub> 항목을 포함하도록 확장되므로 <sub> 항목에 중지 단어가 포함되어 있으면 쿼리 크기가 불필요하게 커지게 됩니다.Queries are expanded to include the <sub> entries from a thesaurus file, and if a <sub> entry contains stopwords, query size increases unnecessarily.

동의어 사전 파일 편집 관련 제한 사항Restrictions for editing thesaurus files

동의어 사전 파일 편집에는 다음과 같은 제한 사항이 적용됩니다.The following restrictions apply to editing a thesaurus file:

  • 동의어 사전 파일은 시스템 관리자만 업데이트, 수정 또는 삭제할 수 있습니다.Only system administrators can update, modify, or delete thesaurus files.

  • 텍스트 편집기 도구를 사용하여 동의어 사전 파일을 편집하는 경우 파일을 유니코드 형식으로 저장하고 바이트 순서 표시를 지정해야 합니다.When editing thesaurus files using text editor tools, the files must be saved in Unicode format, and Byte Order Marks must be specified.

  • 동의어 사전 항목은 비어 있거나 빈 문자열로 단어 분리될 수 없습니다.Thesaurus entries cannot be empty or word break to an empty string.

  • 문자 수가 512개보다 많은 구는 동의어 사전 파일에 사용할 수 없습니다.Phrases in the thesaurus file must be no longer than 512 characters.

  • 동의어 사전에는 확장 집합의 <sub> 항목과 교체 집합의 <pat> 요소 사이에 중복된 항목이 없어야 합니다.A thesaurus must not contain any duplicate entries among the <sub> entries of expansion sets and the <pat> elements of replacement sets.

참고 항목See Also

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