Exchange 2000徹底解剖
>
開発環境としてのExchange 2000 Server
●指定できるSQL文
では,SEARCHメソッドで使用可能なSQL文の書式について説明する。
Web Storage SystemがサポートしているSQL文は,標準的なSQLのサブセットである。検索専用であるため,コマンドはSELECT文しかなく,INSERT文やCREATE文,DELETE文,UPDATE文などはサポートされない。また,最大値をとるMAX関数,最小値をとるMIN関数,合計値をとるSUM関数などもサポートされない。それ以外にも,さまざまな制限がある。これらの制限は,Exchange 2000 Platform SDK(
さて,SEARCHメソッドに指定可能なSELECT文の基本構造は,次のようになっている。
○プロパティ名SELECT プロパティ名,プロパティ名,… FROM 検索場所 WHERE 条件式
プロパティ名には,検索結果として取得したいプロパティ名を列挙する。プロパティ名は,ダブルクォーテーションで括って指定する。ここで指定したプロパティ名が,propエレメントに含まれた形式でサーバーから送り返されることになる(List 9の実行結果を参照)。
なお,プロパティ名には,全プロパティを示す“*”を指定することもできる(“*”を指定する場合には,単に“*”を指定するのであり,ダブルクォーテーションでは括らない)。
○検索場所検索場所には,検索したいURLを指定する。URLはダブルクォーテーションで括って指定する。
このとき,SCOPEという書式を使うと,サブディレクトリを含んで検索するかどうかを指定できる。
- [サブディレクトリを含まない場合]
- FROM SCOPE(
'shallow traversal of "URL") - [サブディレクトリを含む場合]
- FROM SCOPE(
'deep traversal of "URL")
Exchange 2000 Serverがインストールされたときに自動生成されるパブリックフォルダ(PUBLIC FOLDERS)に対し,サブディレクトリを含んだ検索を実行することはできない。そのような操作をしようとしたときには,応答コードとして“HTTP/1.1 501 Not Implemented”が返される。
SCOPEを使わずにURLのみを指定した場合,サブディレクトリは含まれないものとして検索される。つまり“FROM "URL"”は,“FROM SCOPE('shallow traversal of "URL"”と等価である。
また,FROM句には,複数のURLを指定することもできる。たとえば,“
FROM SCOPE(
'shallow traversal of
"http://www.foobar.co.jp/
public"',
'shallow traversal of
"http://www.foobar.co.jp/
public2"')
○条件式
WHERE句には条件式を指定する。WHERE句は省略することもできる。省略した場合には,FROM句で指定されたURL内に存在するすべてのファイルが結果として得られる。
条件式は,基本的に“"プロパティ名" 演算子 '値'”という書式で指定する。具体的には,“"プロパティ名"='値'”や“"プロパティ名">'値'”,“"プロパティ名"<'値'”のように指定する。プロパティはダブルクォーテーションで括り,値はシングルクォーテーションで括るという点に注意したい。もちろんWHERE句では,AND演算子やOR演算子を使った複数条件の結合も指定できる。
それ以外にも,型変換や文字列の比較,フリーテキストサーチをサポートするため,Table 5に示す句が用意されている。
CONTAINS句やFREETEXT句は,次のような形式でプロパティ名を指定すると,比較対象となる値(FREETEXT句の場合にはそれに関連する値)にそのプロパティの値が含まれるかどうかを調べる働きを有する。なお,プロパティ名の代わりに“*”を指定することもできる(“*”の前後にダブルクォーテーションは指定しない)。その場合には,全プロパティが検索の対象となる。
CONTAINS("プロパティ名",
'検索する値')
FREETEXT("プロパティ名",
'検索する値')
フリーテキストサーチが有効になっていない場合,CONTAINS句やFREETEXT句は利用できない。利用しようとすると,“422 Unprocessable Entity”という応答コードが返される。
ここでプロパティを省略すると,ファイル本文をフルテキストサーチすることができる。たとえば,ファイル本文に“Exchange 2000”が含まれるかどうかを検索するには,CONTAINS句を使ってWHERE句を次のように指定すればよい。
WHERE FREETEXT('Exchange 2000')
| 句 | 解説 |
|---|---|
| CAST | 型変換する。一般に,DAVネームスペース(Table 3)やMicrosoft社が提供するネームスペース(Table 4)のプロパティは,自動的に型変換される。したがって,この句は明示的に型変換したいときに指定する。Exchange 2000 Serverでは,urn:schemas-microsoft-com:datatypesネームスペースで定義される形式がサポートされる |
| CONTAINS | 文字列が含まれるかどうかを調べる |
| FROMSOF | 関連する語句が含まれているかどうかを調べる。たとえば,photographを検索語として指定すると,“photography”や“photographer”といった語句も合致の対象になる |
| FREETEXT | フリーテキストサーチを使った条件式を指定する。書式はCONTAINS句と同じ |
| LIKE | ワイルドカード文字(%)を含んだ文字列の検索条件を指定する |
その他の指定としては,順序を指定するORDER BY句,特定のプロパティでグループ化するGROUP BY句が用意されている。また,Webならではという部分では,参照されている回数が多い順番に並び替えるというRANK BY句もある。詳細は,Exchange 2000 Platform SDK(
| 17/27 |
