SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

進化したSQL Server 2012の新機能紹介

検索効率を向上させる新たな機能
――類似データ抽出、空間、関数

進化したSQL Server 2012の新機能紹介(6)

  • X ポスト
  • このエントリーをはてなブックマークに追加

 SQL Server 2012で追加された機能の内、「プログラミングに関する機能強化」に分類される「統計的セマンティック検索」と「空間」、「14個の関数」について紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 SQL Serverを使用したコーディングをより簡潔に、必要とするデータを容易に取得できるように改善がされています。データ間の類似性・関連性を調べたいときには、統計的セマンティック検索を使用すると、統計的に作成されたキーフレーズの重みづけから類似・関連ドキュメントを抽出できます。新たに追加された関数を使用すれば、クエリのコーディングを簡潔にすることができます。

 今回は、クエリを書く際の効率化、容易性向上を実現した「統計的セマンティック検索」と「空間」、「14個の関数」について紹介します。

対象読者

  • SQL Serverを使用するアプリケーション設計、開発者
  • SQL Serverデータベース管理者
  • SQL Server 2012の新機能に興味のある方

類似・関連した値を抽出する統計的セマンティック検索

 統計的セマンティック検索は、文章を形態素解析を実施し、単語・キーフレーズを抽出します。抽出した単語・キーワードを統計的言語モデルが含まれたセマンティック言語統計データベースを利用して、抽出したフレーズを統計的にスコア付けし、類似・関連度合いを算出します。算出結果からインデックスを作成して、類似・関連したドキュメントを抽出できます(図1)。フルテキスト検索では単語をベースにした検索をするのに対して、セマンティック検索ではドキュメントの意味に対して検索を実行するとされています。

 セマンティック検索は日本語をサポートしていない(日本語用の統計データベースが提供されていない)ため、日本語部分には使用することができません。しかし、今後もサポートする言語が追加されていくので、いずれ日本語にも対応すると思われます。

図1 セマンティック検索の仕組み
図1 セマンティック検索の仕組み

 フルテキストインデックスを作成する際にセマンティックを有効にすることで、フルテキストインデックス用のインデックスとセマンティック用のインデックスが作成されます。セマンティック検索用に提供された関数を使用して、セマンティック検索用インデックスにアクセスします。

 以下では、セマンティック検索を有効化し、セマンティック検索用のインデックスを作成、作成したインデックスを使用して、類似データの抽出を実施する手順を紹介します。

事前準備1 セマンティック検索のインストール方法

 セマンティック検索をインストールするには、SQL Serverのセットアップ時にインストールする機能で選択しておく必要があります。セマンティック検索がインストールされているか確認したい場合は、リスト1のクエリを実行します。

リスト1 セマンティック検索のインストール確認
SELECT 
    case SERVERPROPERTY('IsFullTextInstalled')
        when 1 then 'セマンティック検索はインストール済み'
        when 0 then 'セマンティック検索は未インストール'
    end 
GO

 セマンティック検索がインストールされていない場合は、SQL Server 2012のインストールウィザードを起動し、機能の選択で図2のようにセマンティック検索にチェックを入れます。セマンティック検索は、フルテキスト検索に依存するので、フルテキスト検索にもチェックを入れます。

図2 セマンティック検索のインストール選択
図2 セマンティック検索のインストール選択

事前準備2 セマンティック言語統計データベースのインストール方法

 セマンティック検索は、統計的言語モデルが含まれたセマンティック言語統計データベースを使用するので、セマンティック検索をインストールした後にデータベースのインストールが必要です。なお、セマンティック言語統計データベースには、セマンティック検索でサポートする全言語のデータが格納されています。

1. セマンティック言語統計データベース用ファイルを準備する

 セマンティック言語統計データベースをインストールするには、SQL Serverのインストールメディアに同梱されているmsiファイルを使用するか、Webからダウンロードしてきたmsiファイルを利用します。今回は、マイクロソフトのダウンロードサイトからダウンロードします。

2. SemanticLanguageDatabase.msiを実行する

 ダウンロードしたSemanticLanguageDatabase.msiを実行します。既定では、[Program Files]-[Microsoft Semantic Language Database]に出力されます(図3)。

図3 セマンティック言語統計データベースの出力場所の指定
図3 セマンティック言語統計データベースの出力場所の指定

 処理が完了すると、セマンティック言語統計データベースファイル「License_SemanticLang.txt」とログファイル「semanticsDB.mdf」、ライセンス条項「semanticsdb_log.ldf」が出力されます(図4)。

図4 セマンティック言語統計データベースの出力結果
図4 セマンティック言語統計データベースの出力結果

 出力された場所で運用をするには権限不足などの問題が発生する可能性があるので、SQL Serverのシステムデータベースが設置されている場所などに移動します。

 今回は[Program Files]-[Microsoft SQL Server]-[MSSQL11]-[MSSQL]-[DATA]に移動します。

3. セマンティック言語統計データベースをアタッチする

 SQL Server Management Studioを使用するか、リスト2のクエリを実行してセマンティック言語統計データベースをアタッチします。

リスト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のクエリを実行します。

リスト3 セマンティック言語統計データベースの登録
EXEC sp_fulltext_semantic_register_language_statistics_db @dbname = N'semanticsdb'
GO

次のページ
セマンティック検索を列で有効化する手順

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
進化したSQL Server 2012の新機能紹介連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 大和屋 貴仁(ヤマトヤ タカヒト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6682 2012/08/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング