介绍如何在为统计语义索引配置的文档或文本列中查找关键短语。
在文档中查找关键短语
如何:使用 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