SQL Server 2008 での全文検索

SQL Server 2008 より全文検索エンジン (FullText Search Engine) が統合された。統合されたとはいっても、プロセスそのものは別になっていて起動のためのサービスが別に定義されている状況は今までとそれほど変わらない。ただしサービスの名前が  Full-text filter Daemon Launcher となっている。

Release Notes for SQL Server 2008 Release Candidate 0 によると以下のような注意書きがある

2.10 Full-Text Search Does Not Work Using the Local System Service Account Under Windows XP or Windows Server 2003

Local Service アカウントであれば動作するということのようだが、手元の環境(Windows Server 2003 R2 x64) の場合、Local Service アカウントでは動作せず、Network Service アカウントにする必要があった。この環境ではインストール時に SQL Server 2008 関係のサービスは(FDHost Launcher を除き) すべて Network Service アカウントにて動作させるようにしていた。

リリースノートには記載されていないが、想像としては

  • SQL Server 側から FDHost の起動を指示するようになっている
  • SQL Server 側の権限が FDHost Launcher の権限よりも同じか強い必要がある。ただし Local System を双方に設定するのは不可のようだ

というようなところだろうか。How to: Set the FDHOST Launcher (MSSQLFDLauncher) Service Account for Full-Text Search (SQL Server Configuration Manager) には「The SQL Server service group does not have permission to start FDHOST Launcher service.」という記載があるが、これは SQL Server 本体側のサービスアカウントの権限であって、FDHost Launcher 自体のサービスアカウントに関する記述ではない。一方 FDHost Launcher には最低限の権限を持った専用のユーザで動作させよ、という記述はあるが Windows サービス アカウントの設定 に設定すべき権限の指示がないため、専用のユーザを作成する作業をしていない。

ちなみに SQL Server 2008 の全文検索だが、統合されたということだけではなく以下のような機能拡張がされている。

  • 単語分割ロジックとして複数の言語が指定できるようになった。もちろん日本語も含まれる
  • 除外ワード (ストップワード) を明示的に指定できるようになった
  • 類義語を指定できるようになった

チューニング次第では実用的になるかもしれない。

作業をほぼGUIで全文検索を設定してみた動画 :

作業内容

  1. フルテキストカタログ用の 新規ファイルグループを作成
  2. フルテキストカタログを作成 (GUI データベース – ストレージ – フルテキスト カタログ からだとファイルグループの指定ができないためここだけ SQL 文)
  3. フルテキストインデックスを作成
  4. CONTAINS 句を利用して検索

作業の前提条件

  • SQL Server 2008 RC0 / Windows Server 2003 R2 x64
  • FDHost Launcher が適切なアカウントで起動している
  • AdventureWorks2008LT データベースをインストール済み

(追記) エラーを起こさないような CREATE FULLTEXT INDEX の書き方。あらかじめ存在チェックをして存在していたら削除する。これぐらいであれば SQL Server 2005/2008 共通。

IF objectproperty(object_id('[SalesLT].[Product]'), 'TableHasActiveFullTextIndex') = 1
BEGIN
  DROP FULLTEXT INDEX ON [SalesLT].[Product]
END

CREATE FULLTEXT INDEX
ON [SalesLT].[Product] ([Name], [ProductNumber])
KEY INDEX [PK_Product_ProductID]
WITH CHANGE_TRACKING = AUTO
GO
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。