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

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

3 つの Transact-SQL 行セット関数を使用することにより、これらのセマンティック インデックスに対してクエリを実行して、結果を構造化データとして取得することができます。

このトピックの内容

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

    • ドキュメント内のキー フレーズの検索

    • 類似または関連ドキュメントの検索

    • ドキュメントの類似性を示すキー フレーズの識別

  • SQL Server へのドキュメントの保存

  • 関連タスク

  • 関連コンテンツ

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

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

以降の例に、セマンティック検索の機能を示します。

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

次のクエリは、サンプル ドキュメントで識別されたキー フレーズを取得します。 結果は、各キー フレーズの統計的有意性を順位付けするスコアの降順で表されます。 このクエリでは、semantickeyphrasetable (Transact-SQL) 関数を呼び出しています。

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 (Transact-SQL) 関数を呼び出しています。

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 (Transact-SQL) 関数を呼び出しています。

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

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

先頭に戻る

関連タスク

関連コンテンツ