语义搜索 (SQL Server)

统计语义搜索通过提取统计上相关的“关键短语”并对其进行索引,提供对 SQL Server 中存储的非结构化文档的更深层次剖析。 然后,它还使用这些关键短语标识“相似或相关文档”并对其进行索引。

您通过使用三个 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

页首

查找相似或相关文档

以下查询获取已标识为与示例文档相似或相关的文档。 该查询按照对这两个文档的相似性进行排名的分数以降序方式展示结果。 此查询调用 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

页首

查找使文档相似或相关的关键短语

以下查询获取使两个示例文档彼此相似或相关的关键短语。 该查询按照对每个关键短语的权重进行排名的分数以降序方式展示结果。 此查询调用 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 功能的详细信息,请参阅 FileTable (SQL Server)。 有关 FILESTREAM 功能(这是用于在数据库中存储文档的另一个选项)的信息,请参阅 FILESTREAM (SQL Server)

页首

相关任务

相关内容