フルテキスト検索の言語選択時の注意
フルテキスト インデックス作成時の言語の選択
フルテキスト インデックスの作成時に列の言語を選択する際には、注意点が 2 つあります。これらの注意点は、テキストをトークン化する方法と、Microsoft Full-Text Engine for SQL Server (MSFTESQL) によるインデックス作成の方法にかかわるものです。インデックス作成の対象テキストを単語の境界でトークン化するのは、ワード ブレーカです。この単語の区切りは、英語では通常、空白または何らかの句読点になります。ドイツ語などの他の言語では、単語や文字を組み合わせることができます。したがって、列レベルで言語を選択する場合は、その列の行に格納されると予想される言語を選択する必要があります。確信がない場合は、空白や句読点のみでトークン化を実行するニュートラル ワード ブレーカを使用するのが無難です。また、列レベルで言語を選択する際には「ステミング」を利用できます。フルテキスト クエリでのステミングは、特定の言語の単語に対し、語幹から派生した語形 (変化形) をすべて検索するプロセスとして定義されます。
言語を選択する際のもう 1 つの注意点は、データの表記方法に関連するものです。varbinary(max) 列に格納されていないデータについては、特別なフィルタ処理は実行されません。テキストはそのままの形で単語を分解するコンポーネント (ワード ブレーカ) に渡されます。ワード ブレーカは主に記述されたテキストを処理することを目的として設計されています。したがって、HTML などの何らかのマークアップがテキストに含まれている場合には、言語面での精度が高いインデックス作成と検索は期待できません。このような場合には、2 つの選択肢があります。推奨される方法は、テキスト データを varbinary(max) 列に格納し、ドキュメント タイプを明示してフィルタ処理されるようにする方法です。この方法を選択できない場合は、ニュートラル ワード ブレーカの使用を検討してください。また、可能であれば、ノイズ語の一覧にマークアップ データ (HTML の「br」など) を追加します。
メモ : |
---|
ニュートラル言語を指定した場合、言語ベースのステミングは使用できません。 |
言語サポート
Microsoft SQL Server 2005 では、列の既定言語ではない言語をフルテキスト クエリで使用して、フルテキスト データを検索できます。言語がサポートされていて、そのリソースがインストールされていれば、CONTAINS、CONTAINSTABLE、FREETEXT、FREETEXTTABLE クエリの LANGUAGE language_term
句に指定した言語が、単語の分解、ステミング、シソーラス (類義語)、ノイズ語の処理に使用されます。
次の表に、フルテキスト インデックス データを格納するときに使用される言語を示します。言語は、Microsoft SQL Server のセットアップ時に選択した Unicode 照合ロケール識別子に基づいています。
Unicode 照合ロケール識別子 | フルテキスト データ格納用言語 |
---|---|
中国語、ピンイン (台湾) |
中国語 (繁体字) |
中国語の表記規則 |
中国語 (簡体字) |
中国語、画数 (簡体字) |
中国語 (簡体字) |
中国語、画数 (台湾) |
中国語 (繁体字) |
オランダ語 |
オランダ語 |
英語 (UK) |
英語 (UK) |
フランス語 |
フランス語 |
汎用 Unicode |
英語 (US) |
ドイツ語 |
ドイツ語 |
ドイツ語、電話帳 |
ドイツ語 |
イタリア語 |
イタリア語 |
日本語 |
日本語 |
日本語 Unicode |
日本語 |
韓国語 |
韓国語 |
韓国語 Unicode |
韓国語 |
スペイン語 (スペイン) |
スペイン語 |
スウェーデン語/フィンランド語 |
スウェーデン語 |
この一覧にないその他の Unicode 照合ロケール識別子の値は、ニュートラル言語の単語の区切りまたは語幹にマッピングされます。この場合、単語の区切りとしてスペースを使用します。
メモ : |
---|
Unicode 照合ロケール識別子の設定は、フルテキスト インデックス作成で有効なすべてのデータ型 (char 型や nchar 型など) に適用されます。char、varchar、text 型の列の並べ替え順を、Unicode 照合ロケール識別子で指定された言語とは異なる言語に設定した場合でも、char、varchar、および text 型の列のフルテキスト インデックスを作成または照会するときは Unicode 照合ロケール識別子を使用します。 |
参照
その他の技術情報
フルテキスト検索の概念
データ型 (Transact-SQL)
CONTAINS (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)