你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
配置语义排名并在搜索结果中返回标题
在本文中,了解如何对结果集调用语义排名,从而将语义上最相关的结果提升到堆栈顶部。 还可以获取语义标题,其中突出显示了最相关的术语和短语,以及语义答案。
先决条件
基本层、标准层(S1、S2、S3)或存储优化层(L1、L2)上的搜索服务(受区域可用性限制)。
已为你的搜索服务启用语义排序器。
包含富文本内容的现有搜索索引。 语义排序适用于文本(非矢量)字段,最适用于信息性或描述性内容。
选择客户端
选择一个支持语义排名的搜索客户端。 提供以下选择:
- Azure 门户,使用索引设计器添加语义配置。
- 包含 REST 客户端的 Visual Studio Code
- 用于 .NET 的 Azure SDK
- Azure SDK for Python
- Azure SDK for Java
- Azure SDK for JavaScript
添加语义配置
语义配置是索引中的一个部分,用于为语义排名建立字段输入。 可以随时添加或更新语义配置,而无需重新生成。 如果创建多个配置,可以指定一个默认值。 查询时,在查询请求上指定语义配置,或将其留空以使用默认值。
语义配置具有一个名称和以下属性:
properties | 特征 |
---|---|
“标题”字段 | 一个短字符串,理想情况下少于 25 个单词。 此字段可以是文档的标题、产品名称或唯一标识符。 如果你没有合适的字段,请将其留空。 |
内容字段 | 自然语言形式的较长文本块,受机器学习模型的最大标记输入限制的约束。 常见的示例包括文档正文、产品说明或其他自由格式文本。 |
关键字字段 | 关键字(例如文档上的标记)的列表,或者项的类别等描述性词语。 |
只能指定一个标题字段,但可以拥有所需任意数量的内容和关键字字段。 对于内容和关键字字段,请按优先级顺序列出字段,因为优先级较低的字段可能会被截断。
在所有语义配置属性中,你分配的字段必须:
- 特性化为
searchable
和retrievable
- 是
Edm.String
或Collection(Edm.String)
类型的字符串。Collection(Edm.ComplexType)
的字符串子字段
从预览版迁移
如果你的语义排名代码使用的是预览版 API,请参阅本部分,其中介绍了如何迁移到稳定版本。 可以检查更改日志以验证正式版:
- 2023-11-01 (REST)
- 用于 .Net (11.5) 的 Azure SDK 的更改日志
- 用于 Python (11.4) 的 Azure SDK 的更改日志
- 用于 Java (11.6) 的 Azure SDK 的更改日志
- 用于 JavaScript (12.0) 的 Azure SDK 的更改日志
行为变更:
从 2023 年 7 月 14 日起,语义排序器与语种无关。 它可以对由多语言内容组成的结果进行重新排名,而不偏向特定语言。 在预览版本中,语义排名会降低与字段分析器指定的语言不同的结果的优先级。
在 2021-04-30-Preview 和所有更高版本中,对于 REST API 和所有相同版本的 SDK 包:
semanticConfiguration
(在索引定义中)定义了在语义排序中使用哪些搜索字段。 之前在 2020-06-30-Preview REST API 中,searchFields
(在查询请求中)用于字段规范和优先级确定。 此方法仅在 2020-06-30-Preview 中有效,在所有其他版本中已过时。
步骤 1:删除 queryLanguage
语义排名引擎现在与语种无关。 如果在查询逻辑中指定了 queryLanguage
,则它不再用于语义排名,但仍适用于拼写更正。
如果使用拼写检查器,并且拼写检查器支持语言值,请保留“queryLanguage
”。 拼写检查跨语言的可用性有限。
否则,请删除 queryLanguage
。
步骤 2:将 searchFields
替换为 semanticConfiguration
如果你的代码调用 2020-06-30-Preview REST API 或面向该 REST API 版本的 beta SDK 包,你可能会在查询请求中使用 searchFields
来指定语义字段和优先级。 在初始 beta 版本中,searchFields
具有双重用途:将初始查询限制为 searchFields
中列出的字段,并在使用语义排序时设置字段优先级。 在更高版本中,searchFields
保留其原始用途,但不再用于语义排序。
如果使用查询请求将全文搜索限制为命名字段列表,请保留searchFields
。
按照本文中的说明,将semanticConfiguration
添加到索引架构以指定字段优先级。
后续步骤
通过运行语义查询来测试语义配置。