使用语义搜索查找文档中的关键短语
适用范围:SQL Server
介绍如何在为统计语义索引配置的文档或文本列中查找关键短语。
使用 SEMANTICKEYPHRASETABLE 在文档中查找关键短语
要确定特定文档中的关键短语或确定包含特定关键短语的文档,可以查询函数 semantickeyphrasetable (Transact-SQL)。
SEMANTICKEYPHRASETABLE 为与指定表中的列关联的那些关键短语返回包含零行、一行或多行的表。 可以在 SELECT 语句的 FROM 子句中像引用常规表名那样引用此行集函数。
注意
在此版本中,对于语义搜索只将单个单词编入索引,多词短语 (ngrams) 未编入索引。 此外,相同单词的各种形式单独编入索引,例如,“computer”和“computers”单独编入索引。
有关 SEMANTICKEYPHRASETABLE 函数所需的参数和它返回的结果表的详细信息,请参阅 semantickeyphrasetable (Transact-SQL)。
重要
针对的列必须启用了全文索引和语义索引。
示例 1:查找特定文档中的最重要关键短语
以下示例从通过 @DocumentId 变量指定的文档中检索前 10 个关键短语,该变量位于 AdventureWorks 示例数据库的 Production.Document 表的 Document 列中。 @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 表的 Document 列中检索包含关键短语“Bracket”的前 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