SharePoint 検索 SQL クエリ言語の情報
最終更新日: 2010年4月21日
適用対象: SharePoint Server 2010
この記事の内容
識別子
リテラル
大文字と小文字の区別
アクセントの無視
関連性の値について
ローカライズされた検索を使用する
このセクションの内容
Microsoft SharePoint Server 2010 Search には、フル テキスト検索をサポートするコンテンツ クロールおよび検索機能があります。SharePoint Server Search で使用されるクエリ言語は、標準の SQL-92 および SQL-99 データベース クエリ構文を拡張し、テキスト ベースの検索により使いやすさが向上しています。
識別子
識別子は、列 (プロパティと呼ばれることもある) やカタログ、エイリアスの名前を指定します。それに対し、リテラルは、文字列と数値を指定します。
最大 128 文字で、次の 2 種類のどちらかの識別子を作成することができます。種類は識別子の名前に使用される文字によって決まります。
**通常の識別子 **A-Z、a-z、0-9 の文字、アンダースコアのみ使用可能で、先頭は文字で始まります。通常の識別子は二重引用符で囲む必要はありません。
区切り付き識別子 有効な Unicode 文字が使用可能で、二重引用符で囲む必要があります。
Uniform Resource Name (URN) として作成した識別子には必ず特殊文字が含まれるため、常に区切り付き識別子となり、二重引用符で囲む必要があります。
注意
SharePoint Server Search にインデックス付きプロパティをすべてクエリに含めるように指定したい場合は、特別な列識別子としてアスタリスク (*) を使用できます。この場合、通常の識別子ではありませんが、二重引用符は必要ありません。
リテラル
リテラルとは、クエリ ステートメントの値を表す文字列です。リテラルを使用して、列の値を比較し、検索用語を指定します。SharePoint Server Search では、次の型のリテラルをサポートします。
文字列
文字列リテラルは、長さの制限がなく、ANSI (American National Standard Institute) 文字と Unicode 文字のどちらかを含めることができます。文字列リテラルは単一引用符で囲む必要があります。文字列リテラルの中に単一引用符を含めるには、2 つの単一引用符を使用します。連続した 2 つの単一引用符 ('') は、空白の文字列を表します。
数値
数値リテラルは、正と負の整数、小数点数、通貨値などの数値を表し、0 ~ 9 の数字、ピリオド、および文字 E (または e) を含めることができます。科学的記数法 (たとえば、2.3E-05) を使用して、数値リテラルを定義できます。数値リテラルは単一引用符で囲まないでください。単一引用符で囲むと、文字列リテラルと見なされ、文字列比較技法を使用して比較されます。通貨値に通貨記号を含めることはできません。
16 進数
16 進数リテラルは、16 進数表記で指定された符号なしの整数を表し、0 ~ 9 の数字および A ~ F と a ~ f の文字を使用できます。16 進数リテラルは 0x で始まる必要があります。
注意
SQL-92 標準では、16 進リテラルを単一引用符で囲む必要がありますが、SharePoint Server Search ではその記号をサポートしていません。
ブール値
ブール値リテラルは論理値を表し、TRUE または FALSE のどちらかになります。ブール値リテラルは単一引用符で囲まないでください。単一引用符で囲むと、文字列リテラルとして解釈されます。
日付
日付リテラルは特定の日付、タイム スタンプ、相対時間を表し、単一引用符で囲まれています。日付は "年/月/日" 形式または "年-月-日" の形式で、数字で入れます。年は 4 桁の値で指定します (例 : 2004)。時間は、"時 : 分 : 秒" の形式にします。相対時間の構文は、SharePoint 検索 SQL 構文の DATEADD 関数 に基づいています。
大文字と小文字の区別
SharePoint Server Search クエリでは大文字と小文字が区別されません。これには、クエリ キーワード (SELECT は Select、select、および sELect と同一視されます) と検索用語にも当てはまります。識別子またはリテラルでケース マッピング セマンティクスを持つ Unicode 文字を使用する場合、検索エンジンでは大文字と小文字はすべて同じと見なされます。
アクセントの無視
SharePoint Server Search クエリでは大文字と小文字が区別されないだけでなく、FREETEXT 述語または CONTAINS 述語を使用している場合は、アクセントも区別されません。"resume" という用語を検索すると、"résumé" が含まれるドキュメントも返されます。識別子またはリテラルにアクセント記号付きの Unicode 文字が含まれる場合、検索クエリでは、識別子またはリテラル内のアクセント記号付き文字の基本文字を使用する Unicode 結合文字が含まれるエントリも返されます。
注意
これは、文字範囲 0x2e81 ~ f8ff および 0x1100 ~ 0x11ff には当てはまりません。
関連性の値について
リレーショナル データベースで使用する場合、検索クエリで返される行は、クエリが要求したすべての条件を満たしている必要があります。それに対して、SharePoint Server Search クエリはさまざまな程度の検索条件に一致するドキュメントを返すことができます。
たとえば、リレーショナル データベースで "program" という用語を検索すると、その単語の特定のスペルが含まれるレコードが生成されます。1 つのレコードにその単語が 1 回出現しても、100 回出現しても、結果に影響しません。それに対して、SharePoint Server Search は一致するドキュメントに関する関連性の値を返します。タイトルに "program" が含まれるドキュメントの関連性は、最後の段落にのみその単語が含まれるドキュメントより高くなります。同様に、検索用語の変化形 ("programs"、"programming" など) が含まれるドキュメントも一致し、クエリで返されます。
SharePoint Server Search クエリは、"rank" という名前の列に関連性の値を整数で返します。
さらに、以下のことが言えます。
クエリが返すランク値は 0 から 1000 までの範囲の整数です。
ランク値が高いほど、他よりも検索条件によく一致しているドキュメントであることを示します。
ランク値は現在のクエリにのみ適用されるので、クエリ間で結果を比較することはできません。
ランク値は、クエリに一致する他のドキュメントとの関係を示します。したがって、特定のドキュメントのランク値は、同じクエリに一致する他のドキュメントによって決まります。
完全に関係述語に一致するアイテムのランク値は 1000 です。
ローカライズされた検索を使用する
SharePoint Server Search は、Unicode のフル検索をサポートしています。Unicode を使用するドキュメントをインデックス処理し、Unicode 識別子とリテラルを使用する検索クエリを作成することができます。しかし、アプリケーションまたはオペレーティング システムの言語設定によっては、SharePoint Server Search の動作に関して、大きく影響する場合があります。
ドキュメントとシステムのロケール設定
オペレーティング システムは (あるいはアプリケーションの場合でも)、特定の言語とロケールを使用するように設定されていると、多くの設定に影響します。これらの設定には数値形式、日付形式、通貨形式、大文字と小文字のマッピング、辞書のソート順、トークン化などが含まれます。これらの設定により SharePoint Server Search は優れたローカライズ サポートを実現していますが、あるロケールのドキュメントを別のロケールのシステムを使用して検索すると、予期しない結果が発生することがあります。
たとえば、各言語のノイズ ワード (意味上や文脈上不要なためにインデックス処理時やクエリから削除された単語) のリストは、大きく異なります。ドイツ語で "die" という単語は英語の "the" に相当します。ドイツ語のドキュメントをインデックス処理して、英語のクエリ システムで "die" を検索すると、この単語は無視すべきなのに、ドキュメントが返されることがあります。ドイツ語のシステムで同じクエリを実行すると、検索クエリにノイズ ワードしか含まれないというエラーが返されます。
IFilter オブジェクトはドキュメントのテキスト プロパティとコンテンツを処理すると、そのドキュメントの言語をコンテンツ インデクサーに報告します。この情報を使用して、SharePoint Server Search は適切なワード ブレーカーとノイズ ワードのリストを適用できます。
言語を指定する
検索クエリに使用する言語は指定することができます。WHERE 句用の FREETEXT および CONTAINS 述語の両方では、言語の指定がサポートされます。次の構文を使用して、CONTAINS または FREETEXT 述語で数値ロケール識別子 (LCID) を提供することにより、クエリ言語を指定できます。
CONTAINS | FREETEXT
([<column_identifier>,]'<content_search_condition>' [,LCID])
詳細については、CONTAINS および FREETEXT 述語の構文を参照してください。
このセクションの内容
SharePoint Portal Server 2003 からの SQL 構文の変更