你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
语义排序循环访问初始结果集,应用 L2 排序方法,该方法将语义上最相关的结果提升到堆栈顶部。 还可以获取语义标题,其中突出显示了最相关的术语和短语,以及语义答案。
本文介绍如何配置搜索索引进行语义重新调整。
注意
如果现有代码调用预览版或以前的 API 版本,请参阅迁移语义排名代码,获取有关修改代码的帮助。
先决条件
选择客户端
可以使用以下任何工具和软件开发工具包 (SDK) 添加语义配置,在新索引或现有索引上指定语义配置:
添加语义配置
语义配置是索引中的一个部分,用于为语义排名建立字段输入。 可以随时添加或更新语义配置,而无需重新生成。 如果创建多个配置,可以指定一个默认值。 查询时,在查询请求上指定语义配置,或将其留空以使用默认值。
语义配置具有一个名称和以下属性:
properties |
特征 |
“标题”字段 |
一个短字符串,理想情况下少于 25 个单词。 此字段可以是文档的标题、产品名称或唯一标识符。 如果你没有合适的字段,请将其留空。 |
内容字段 |
自然语言形式的较长文本块,受机器学习模型的最大标记输入限制的约束。 常见的示例包括文档正文、产品说明或其他自由格式文本。 |
关键字字段 |
关键字(例如文档上的标记)的列表,或者项的类别等描述性词语。 |
只能指定一个标题字段,但可以拥有所需任意数量的内容和关键字字段。 对于内容和关键字字段,请按优先级顺序列出字段,因为优先级较低的字段可能会被截断。
在所有语义配置属性中,你分配的字段必须:
- 特性化为
searchable
和 retrievable
- 是
Edm.String
或 Collection(Edm.String)
类型的字符串。Edm.ComplexType
的字符串子字段
登录 Azure 门户并导航到已启用语义排名的搜索服务。
在左侧导航窗格中的“索引”,选择一个索引。
选择“语义配置”,然后选择“添加语义配置”。
在“新建语义配置”页上,输入语义配置名称并选择在语义配置中使用的字段。 只有可搜索和可检索的字符串字段才符合条件。 请确保按优先级顺序列出内容字段和关键字字段。
选择“保存”,保存配置设置。
在索引页上再次选择保存,以在索引中保存语义配置。
表述创建或更新索引请求。
将语义配置添加到索引定义,可能在 scoringProfiles
或 suggesters
之后。 指定默认值是可选的,但在你有多个配置的情况下很有用。
"semantic": {
"defaultConfiguration": "my-semantic-config-default",
"configurations": [
{
"name": "my-semantic-config-default",
"prioritizedFields": {
"titleField": {
"fieldName": "HotelName"
},
"prioritizedContentFields": [
{
"fieldName": "Description"
}
],
"prioritizedKeywordsFields": [
{
"fieldName": "Tags"
}
]
}
},
{
"name": "my-semantic-config-desc-only",
"prioritizedFields": {
"prioritizedContentFields": [
{
"fieldName": "Description"
}
]
}
}
]
}
在用于 .NET 的 Azure SDK 中使用 SemanticConfiguration 类。
以下示例来自 Azure SDK 团队创作的语义排序示例。
string indexName = "hotel";
SearchIndex searchIndex = new(indexName)
{
Fields =
{
new SimpleField("HotelId", SearchFieldDataType.String) { IsKey = true, IsFilterable = true, IsSortable = true, IsFacetable = true },
new SearchableField("HotelName") { IsFilterable = true, IsSortable = true },
new SearchableField("Description") { IsFilterable = true },
new SearchableField("Category") { IsFilterable = true, IsSortable = true, IsFacetable = true },
},
SemanticSearch = new()
{
Configurations =
{
new SemanticConfiguration("my-semantic-config", new()
{
TitleField = new SemanticField("HotelName"),
ContentFields =
{
new SemanticField("Description")
},
KeywordsFields =
{
new SemanticField("Category")
}
})
}
}
};
后续步骤
通过运行语义查询来测试语义配置。