SQLServer2005でフルテキストインデックス

フルテキストインデックス
などに利用する。
今回のシステムで全文検索したいと要望があるので調べた。

データベースのフルテキストインデックスを有効化

USE データベース名;
GO
EXEC sp_fulltext_database 'enable';
GO

「sp_fulltext_database」は非推奨らしい。DDLでやれと書いてる。

フルテキストカタログの作成

CREATE FULLTEXT CATALOG カタログ名
ON FILEGROUP ファイルグループ名;

FILEGROUPを指定しない場合はデフォルトのファイルグループにカタログが作られる。

フルテキストインデックスの作成

CREATE FULLTEXT INDEX
ON テーブル名(インデックスを作成する列名)
KEY INDEX テーブルのプライマリーキー(ユニーク)
ON カタログ名;

これで準備完了。

あとは、検索SQLを書いて実行するだけ。

SELECT * FROM テーブル名
WHERE CONTAINS(インデックスを作成した列名, ' "検索キーワード" OR "検索キーワード" ');

CONTAINS」を使ってSQL文を書く。

検索キーワードの前後に半角アスタリスクをいれることでLIKE的に含む文字列が返される。

フルテキストインデックス対象の列の中に、複数キーワードを保存する場合は半角スペース区切りで保存する
でないと正しい結果が返されなかった。
その2に複数キーワードについてもうちょい詳しく記述。