你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置语义排名并在搜索结果中返回标题

在本文中,了解如何对结果集调用语义排名,从而将语义上最相关的结果提升到堆栈顶部。 还可以获取语义标题,其中突出显示了最相关的术语和短语,以及语义答案

先决条件

  • 基本层、标准层(S1、S2、S3)或存储优化层(L1、L2)上的搜索服务(受区域可用性限制)。

  • 已为你的搜索服务启用语义排序器。

  • 包含富文本内容的现有搜索索引。 语义排序适用于文本(非矢量)字段,最适用于信息性或描述性内容。

选择客户端

选择一个支持语义排名的搜索客户端。 提供以下选择:

添加语义配置

语义配置是索引中的一个部分,用于为语义排名建立字段输入。 可以随时添加或更新语义配置,而无需重新生成。 如果创建多个配置,可以指定一个默认值。 查询时,在查询请求上指定语义配置,或将其留空以使用默认值。

语义配置具有一个名称和以下属性:

properties 特征
“标题”字段 一个短字符串,理想情况下少于 25 个单词。 此字段可以是文档的标题、产品名称或唯一标识符。 如果你没有合适的字段,请将其留空。
内容字段 自然语言形式的较长文本块,受机器学习模型的最大标记输入限制的约束。 常见的示例包括文档正文、产品说明或其他自由格式文本。
关键字字段 关键字(例如文档上的标记)的列表,或者项的类别等描述性词语。

只能指定一个标题字段,但可以拥有所需任意数量的内容和关键字字段。 对于内容和关键字字段,请按优先级顺序列出字段,因为优先级较低的字段可能会被截断。

在所有语义配置属性中,你分配的字段必须:

  • 特性化为 searchableretrievable
  • Edm.StringCollection(Edm.String) 类型的字符串。Collection(Edm.ComplexType) 的字符串子字段
  1. 登录 Azure 门户并导航到已启用语义排名的搜索服务。

  2. 在左侧导航窗格中的“索引”,打开一个索引。

  3. 选择“语义配置”,然后选择“添加语义配置”。

    此时“新建语义配置”页将打开,其中包含用于选择标题字段、内容字段和关键字字段的选项。 只有可搜索和可检索的字符串字段才符合条件。 请确保按优先级顺序列出内容字段和关键字字段。

    Screenshot that shows how to create a semantic configuration in the Azure portal.

    选择“确定”以保存更改。

从预览版迁移

如果你的语义排名代码使用的是预览版 API,请参阅本部分,其中介绍了如何迁移到稳定版本。 可以检查更改日志以验证正式版:

行为变更:

  • 从 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添加到索引架构以指定字段优先级。

后续步骤

通过运行语义查询来测试语义配置。