使用语义搜索在文档中查找关键短语

介绍如何在为统计语义索引配置的文档或文本列中查找关键短语。

在文档中查找关键短语

如何:使用 SEMANTICKEYPHRASETABLE 在文档中查找关键短语

若要识别特定文档中的关键短语,或标识包含特定关键短语的文档,请查询函数 semantickeyphrasetable (Transact-SQL)

SEMANTICKEYPHRASETABLE 为与指定表中的列关联的这些关键短语返回一个表,其中包含零行、一行或多行。 可以在 SELECT 语句的 FROM 子句中引用此行集函数,就好像它是常规表名一样。

注释

在 SQL Server 2014 中,只有一个单词为语义搜索编制索引;多单词短语(ngrams)未编制索引。 此外,同一单词的各种形式会分别编入索引,例如,“computer”和“computers”会分别编入索引。

有关 SEMANTICKEYPHRASETABLE 函数所需的参数以及它返回的结果表的详细信息,请参阅 semantickeyphrasetable (Transact-SQL)

重要

针对的列必须启用了全文索引和语义索引。

示例 1:查找特定文档中的首要关键短语

以下示例从 AdventureWorks 示例数据库的 Production.Document 表中,按 Document 列的 @DocumentId 变量指定的文档中检索前 10 个关键短语。 该 @DocumentId 变量表示全文索引键列中的值。

SELECT TOP(10) KEYP_TBL.keyphrase  
FROM SEMANTICKEYPHRASETABLE  
    (  
    Production.Document,  
    Document,  
    @DocumentId  
    ) AS KEYP_TBL  
ORDER BY KEYP_TBL.score DESC;  
GO  

SEMANTICKEYPHRASETABLE 函数通过使用索引查找而不是表扫描来有效地检索这些结果。

示例 2:查找包含特定关键短语的顶级文档

以下示例从 AdventureWorks 示例数据库的 Production.Document 表的文档列中检索包含关键短语“括号”的前 25 个文档。

SELECT TOP (25) DOC_TBL.DocumentID, DOC_TBL.DocumentSummary  
FROM Production.Document AS DOC_TBL  
    INNER JOIN SEMANTICKEYPHRASETABLE  
    (  
    Production.Document,  
    Document  
    ) AS KEYP_TBL  
ON DOC_TBL.DocumentID = KEYP_TBL.document_key  
WHERE KEYP_TBL.keyphrase = 'Bracket'  
ORDER BY KEYP_TBL.Score DESC;  
GO