フルテキスト検索に使用する類義語辞典ファイルの構成と管理Configure and Manage Thesaurus Files for Full-Text Search

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

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.

類義語辞典の照合は、すべての FREETEXT クエリと FREETEXTABLE クエリの場合と FORMSOF THESAURUS 句を指定する CONTAINS クエリと CONTAINSTABLE クエリの場合に行われます。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 類義語辞典ファイルのセットが用意されており、サポートされている各言語に対して 1 つのファイルが存在します。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.xml は空のグローバル類義語辞典ファイルです。An 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 structure of an expansion setXML structure of an expansion set

各拡張セットは <expansion> 要素で囲みます。Each expansion set is enclosed within an <expansion> element. この要素内に、<sub> 要素で囲んだ 1 つまたは複数の代替文字列を指定します。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. 1 つの代替文字列と一致するフルテキスト検索クエリは、拡張セット内の他の代替文字列もすべて含むように拡張されます。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 structure of a replacement setXML structure of a replacement set

各置換セットは <replacement> 要素で囲みます。Each replacement set is enclosed within a <replacement> element. この要素内に、<pat> 要素で囲んだ 1 つ以上のパターンと <sub> 要素で囲んだ 0 個以上の代替文字列 (シノニムごとに 1 つ) を指定できます。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" に対してフルテキスト クエリを実行すると、フルテキスト検索からは "Windows Server 201" または "Windows 8.0" だけを含む検索結果が返されます。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>  

類似するパターンを含む 2 つの置換セットが一致する場合、2 つのうちで長い置換セットが優先されます。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>  

andand

<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>

注意

この設定はファイルで 1 回のみ適用でき、ファイル内のすべての検索パターンに適用されます。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. シノニムの定義には、拡張セットと置換セットという 2 つの形式があります。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. 類義語辞典ファイルの内容を tempdb に読み込むために sp_fulltext_load_thesaurus_file を使用し、類義語辞典ファイルの言語に対応するロケール識別子 (LCID) を指定します。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.

  • テキスト エディター ツールを使用して類義語辞典ファイルを編集する場合、ファイルが Unicode 形式で保存され、バイト順マークが指定されている必要があります。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)