はじめに
SQL Serverを使用したコーディングをより簡潔に、必要とするデータを容易に取得できるように改善がされています。データ間の類似性・関連性を調べたいときには、統計的セマンティック検索を使用すると、統計的に作成されたキーフレーズの重みづけから類似・関連ドキュメントを抽出できます。新たに追加された関数を使用すれば、クエリのコーディングを簡潔にすることができます。
今回は、クエリを書く際の効率化、容易性向上を実現した「統計的セマンティック検索」と「空間」、「14個の関数」について紹介します。
対象読者
- SQL Serverを使用するアプリケーション設計、開発者
- SQL Serverデータベース管理者
- SQL Server 2012の新機能に興味のある方
類似・関連した値を抽出する統計的セマンティック検索
統計的セマンティック検索は、文章を形態素解析を実施し、単語・キーフレーズを抽出します。抽出した単語・キーワードを統計的言語モデルが含まれたセマンティック言語統計データベースを利用して、抽出したフレーズを統計的にスコア付けし、類似・関連度合いを算出します。算出結果からインデックスを作成して、類似・関連したドキュメントを抽出できます(図1)。フルテキスト検索では単語をベースにした検索をするのに対して、セマンティック検索ではドキュメントの意味に対して検索を実行するとされています。
セマンティック検索は日本語をサポートしていない(日本語用の統計データベースが提供されていない)ため、日本語部分には使用することができません。しかし、今後もサポートする言語が追加されていくので、いずれ日本語にも対応すると思われます。
フルテキストインデックスを作成する際にセマンティックを有効にすることで、フルテキストインデックス用のインデックスとセマンティック用のインデックスが作成されます。セマンティック検索用に提供された関数を使用して、セマンティック検索用インデックスにアクセスします。
以下では、セマンティック検索を有効化し、セマンティック検索用のインデックスを作成、作成したインデックスを使用して、類似データの抽出を実施する手順を紹介します。
事前準備1 セマンティック検索のインストール方法
セマンティック検索をインストールするには、SQL Serverのセットアップ時にインストールする機能で選択しておく必要があります。セマンティック検索がインストールされているか確認したい場合は、リスト1のクエリを実行します。
SELECT case SERVERPROPERTY('IsFullTextInstalled') when 1 then 'セマンティック検索はインストール済み' when 0 then 'セマンティック検索は未インストール' end GO
セマンティック検索がインストールされていない場合は、SQL Server 2012のインストールウィザードを起動し、機能の選択で図2のようにセマンティック検索にチェックを入れます。セマンティック検索は、フルテキスト検索に依存するので、フルテキスト検索にもチェックを入れます。
事前準備2 セマンティック言語統計データベースのインストール方法
セマンティック検索は、統計的言語モデルが含まれたセマンティック言語統計データベースを使用するので、セマンティック検索をインストールした後にデータベースのインストールが必要です。なお、セマンティック言語統計データベースには、セマンティック検索でサポートする全言語のデータが格納されています。
1. セマンティック言語統計データベース用ファイルを準備する
セマンティック言語統計データベースをインストールするには、SQL Serverのインストールメディアに同梱されているmsiファイルを使用するか、Webからダウンロードしてきたmsiファイルを利用します。今回は、マイクロソフトのダウンロードサイトからダウンロードします。
2. SemanticLanguageDatabase.msiを実行する
ダウンロードしたSemanticLanguageDatabase.msiを実行します。既定では、[Program Files]-[Microsoft Semantic Language Database]に出力されます(図3)。
処理が完了すると、セマンティック言語統計データベースファイル「License_SemanticLang.txt」とログファイル「semanticsDB.mdf」、ライセンス条項「semanticsdb_log.ldf」が出力されます(図4)。
出力された場所で運用をするには権限不足などの問題が発生する可能性があるので、SQL Serverのシステムデータベースが設置されている場所などに移動します。
今回は[Program Files]-[Microsoft SQL Server]-[MSSQL11]-[MSSQL]-[DATA]に移動します。
3. セマンティック言語統計データベースをアタッチする
SQL Server Management Studioを使用するか、リスト2のクエリを実行してセマンティック言語統計データベースをアタッチします。
CREATE DATABASE semanticsdb ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\DATA\semanticsdb.mdf' ) LOG ON ( FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11\MSSQL\DATA\semanticsdb_log.ldf' ) FOR ATTACH GO
4. セマンティック言語統計データベースを登録する
セマンティック検索からセマンティック言語統計データベースを使用するために、セマンティック言語統計データベースをセマンティック検索用データベースとして登録します。登録するために、リスト3のクエリを実行します。
EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb' GO