セマンティック検索 (SQL Server)

適用対象 SQL Server

SQL Server 統計的セマンティック検索では、統計的に関連性がある キー フレーズ を抽出してインデックスを作成することにより、 データベースに格納されている非構造化ドキュメントを深く解釈することができます。 次に、これらのキー フレーズを使用して、類似または関連ドキュメントを特定してインデックスを作成することができます。

セマンティック検索で実行できる操作

セマンティック検索は、SQL Server の既存のフルテキスト検索機能を基にして構築されていますが、キーワード検索を超える新しいシナリオにも対応できます。 フルテキスト検索ではドキュメントの 単語 に対してクエリを実行しますが、セマンティック検索ではドキュメントの 意味 に対してクエリを実行します。 これによって、自動タグ抽出、関連性のあるコンテンツの検出、類似コンテンツにまたがる階層的なナビゲーションなどのソリューションが可能になりました。 たとえば、キー フレーズのインデックスに対してクエリを実行して、ドキュメントの編成またはコーパスに関する分類を作成することができます。 また、ドキュメントの類似性のインデックスに対してクエリを実行して、ジョブの説明に一致するレジュメを特定できます。

以降の例に、セマンティック検索の機能を示します。 同時に、これらの例では、セマンティック インデックスに対してクエリを実行し、その結果を構造化データとして取得するために使用する 3 つの Transact-SQL 行セット関数を示します。

ドキュメント内のキー フレーズを検索する

次のクエリは、サンプル ドキュメントで識別されたキー フレーズを取得します。 結果は、各キー フレーズの統計的有意性を順位付けするスコアの降順で表されます。

このクエリは、semantickeyphrasetable 関数を呼び出します。

SET @Title = 'Sample Document.docx'  
  
SELECT @DocID = DocumentID  
    FROM Documents  
    WHERE DocumentTitle = @Title  
  
SELECT @Title AS Title, keyphrase, score  
    FROM SEMANTICKEYPHRASETABLE(Documents, *, @DocID)  
    ORDER BY score DESC  
  

類似または関連ドキュメントを検索する

次のクエリは、サンプル ドキュメントに類似または関連すると識別されたドキュメントを取得します。 結果は、2 つのドキュメントの類似性を順位付けするスコアの降順で表されます。

このクエリは、semanticsimilaritytable 関数を呼び出します。

SET @Title = 'Sample Document.docx'  
  
SELECT @DocID = DocumentID  
    FROM Documents  
    WHERE DocumentTitle = @Title  
  
SELECT @Title AS SourceTitle, DocumentTitle AS MatchedTitle,  
        DocumentID, score  
    FROM SEMANTICSIMILARITYTABLE(Documents, *, @DocID)  
    INNER JOIN Documents ON DocumentID = matched_document_key  
    ORDER BY score DESC  
  

類似または関連ドキュメントを示すキー フレーズを検索する

次のクエリは、2 つのサンプル ドキュメント間の類似性または関連性を示すキー フレーズを取得します。 結果は、各キー フレーズの重みを順位付けするスコアの降順で表されます。

このクエリは、semanticsimilaritydetailstable 関数を呼び出します。

SET @SourceTitle = 'first.docx'  
SET @MatchedTitle = 'second.docx'  
  
SELECT @SourceDocID = DocumentID FROM Documents WHERE DocumentTitle = @SourceTitle  
SELECT @MatchedDocID = DocumentID FROM Documents WHERE DocumentTitle = @MatchedTitle  
  
SELECT @SourceTitle AS SourceTitle, @MatchedTitle AS MatchedTitle, keyphrase, score  
    FROM semanticsimilaritydetailstable(Documents, DocumentContent,  
        @SourceDocID, DocumentContent, @MatchedDocID)  
    ORDER BY score DESC  
  

SQL Server へドキュメントを保存する

セマンティック検索でドキュメントのインデックスを作成する前に、ドキュメントを SQL Server データベースに保存する必要があります。

SQL Server の FileTable の機能との組み合わせにより、構造化されていないファイルやドキュメントを、リレーショナル データベースの最上位レベルのオブジェクトにすることができます。 その結果、データベース開発者は、Transact-SQL セットベースの操作で構造化データと共にドキュメントを操作できます。

FileTable 機能の詳細については、「FileTables (SQL Server)」を参照してください。 データベースへのドキュメントの保存の別のオプションである FILESTREAM 機能については、「FILESTREAM (SQL Server)」を参照してください。

関連タスク

セマンティック検索のインストールと構成
統計的セマンティック検索の前提条件と、これらをインストールまたは確認する方法について説明します。

テーブルおよび列に対するセマンティック検索の有効化
ドキュメントまたはテキストが格納されている選択した列に対して統計的セマンティック インデックス作成を有効または無効にする方法について説明します。

セマンティック検索を使用したドキュメント内のキー フレーズの検索
統計的セマンティック インデックス作成用に構成されたドキュメントまたはテキスト列内のキー フレーズのクエリを実行する方法について説明します。

セマンティック検索による類似および関連したドキュメントの取得
統計的セマンティック インデックス作成用に構成されている列での、類似性または関連性のあるドキュメントやテキスト値の検索方法と、どのように類似または関連しているかという情報の検索方法について説明します。

セマンティック検索の管理および監視
セマンティック インデックス作成プロセスと、インデックスの監視および管理に関連するタスクについて説明します。

関連するコンテンツ

セマンティック検索の DDL、関数、ストアド プロシージャ、およびビュー
統計的セマンティック検索をサポートするために追加または変更された Transact-SQL ステートメントおよび SQL Server データベース オブジェクトの一覧を示します。