セマンティック検索を列で有効化する手順
セマンティック検索を利用する準備が完了したので、実際にセマンティック検索をテーブルの列に対して有効化します。
1. セマンティック検索を試行するためのサンプルデータを用意する
リスト4のスクリプトを実行し、データベース「test」とテーブル「取引マスター」を作成し、サンプルデータを挿入します。
CREATE DATABASE test GO USE test CREATE TABLE [取引先マスター]( [取引先コード] [nvarchar](10) NOT NULL, [取引先名] [nvarchar](60) NULL, [取引先英名] [nvarchar](60) NULL) GO CREATE UNIQUE CLUSTERED INDEX [PK_取引先マスター] ON [dbo].[取引先マスター] ( [取引先コード] ASC )ON [PRIMARY] GO INSERT [dbo].[取引先マスター] ([取引先コード], [取引先名], [取引先英名]) VALUES (N'TR0001', N'(株)CRC総合研究所', N'CRC Research Institute Inc.') INSERT [dbo].[取引先マスター] ([取引先コード], [取引先名], [取引先英名]) VALUES (N'TR0002', N'(株)NEC総研', N'NEC Planning Research Ltd.') ...中略... GO SELECT * FROM 取引先マスター
2. フルテキストインデックスの作成とセマンティック検索の有効化
セマンティック検索を有効にするために、テーブルにフルテキストインデックスを作成し、フルテキストインデックス作成時にセマンティック検索を有効にします。フルテキストインデックスを作成する方法には、SQL Server Management Studioのウィザードを使用する方法とスクリプトを実行する方法の2通りあります。
リスト5のスクリプトを実行することで、セマンティック検索を有効にしたフルインデックスを作成できます。セマンティック検索は日本語をサポートしていないため、ワードブレーカーに英語(1033)を指定しています。
CREATE FULLTEXT CATALOG testFS AS DEFAULT -- フルテキストカタログ GO CREATE FULLTEXT INDEX ON 取引先マスター -- フルテキストインデックスを作成するテーブル名 ( 取引先英名 -- フルテキストインデックスの対象列 Language 1033 -- ワードブレーカーの言語指定 Statistical_Semantics -- セマンティック検索の有効化 ) KEY INDEX PK_取引先マスター -- フルテキストインデックスで使用する一意のキー指定 GO
セマンティック検索でサポートされている言語を確認するには、リスト6のクエリを実行します。サポート言語に現時点では日本語は含まれていませんが、随時追加されていくと思われます(注1)。
MSDNライブラリのドキュメントでは記載のない中国語が、リスト6で確認できるサポート言語に含まれていることから、サポート言語が随時追加対応されていることが確認できます。
SELECT * FROM sys.fulltext_semantic_languages GO
SQL Server Management Studioで有効にするには、取引マスターテーブルを右クリックし、[フルテキストインデックス]-[フルテキストインデックスの定義]を選択します(図5)。
フルテキストインデックスで使用する一意キーを指定します(図6)。
対象列と統計的セマンティックの有効化を選択します(図7)。
統計的セマンティックを選択する場合、ワードブレーカーは英語を選択します。日本語はサポートされていないため、日本語を選択した場合、ウィザードの最後で図8のエラーが表示されます。