你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
向 Azure AI 搜索索引中的字符串字段添加语言分析器
语言分析器是特定类型的文本分析器,可以使用目标语言的语言规则执行词法分析。 每个可搜索字符串字段都有一个“analyzer”属性。 如果内容包含翻译后的字符串,例如针对英文文本和中文文本的单独字段,则可在每个字段上指定语言分析器,以便访问这些分析器的丰富语言功能。
何时使用语言分析器
如果感知词汇或句子结构可以为文本分析带来好处,则应该考虑使用语言分析器。 常见例子为不规则动词形式(“bring”和“brought”)或复数名词(“mice”和“mouse”)的关联。 如果没有语言感知功能,仅根据物理特征分析这些字符串,则无法抓住这种联系。 由于大段文本更有可能包含此内容,因此,由描述、评论或摘要组成的字段很适合使用语言分析器。
当内容包含非西方语言字符串时,也应该考虑使用语言分析器。 虽然默认分析器(标准 Lucene)与语言无关,但使用空格和特殊字符(连字符和斜杠)来分隔字符串的概念更适用于西文语言(相当于非西文语言而言)。
例如,在中文、日语、韩语 (CJK) 和其他亚洲语言中,空格不一定是词汇分隔符。 请看下面的日语字符串。 因为它没有空格,所以与语言无关的分析器可能会将整个字符串作为一个标记进行分析,但该字符串实际上是一个短语。
これは私たちの銀河系の中ではもっとも重く明るいクラスの球状星団です。
(This is the heaviest and brightest group of spherical stars in our galaxy.)
对于上面的示例,成功的查询必须包含完整的标记或使用后缀通配符的部分标记,这样会带来不自然且有限的搜索体验。
更好的体验是搜索单个词汇:明るい(明亮)、私たちの(我们的)、銀河系(银河系)。 通过使用 Azure AI 搜索中可用的日语分析器之一,更有可能解锁此行为,因为这些分析器更擅长将文本段拆分为目标语言中有意义的词汇。
比较 Lucene 和 Microsoft 分析器
Azure AI 搜索支持 35 个受 Lucene 支持的语言分析器,以及 Office 和必应中使用的专有 Microsoft 自然语言处理技术支持的 50 个语言分析器。
某些开发人员可能首选更熟悉、简单的开源 Lucene 解决方案。 Lucene 语言分析器更快,但 Microsoft 分析器具有高级功能,如词形还原、字词分解(在德语、丹麦语、荷兰语、瑞典语、挪威语、爱沙尼亚语、芬兰语、匈牙利语、斯洛伐克语中)和实体识别(URL、电子邮件、日期、数字)。 如果可能,应对 Microsoft 和 Lucene 分析器进行比较以确定哪一个更合适。 可使用分析 API 查看使用特定分析器从给定文本生成的标记。
Microsoft 分析器的索引平均比 Lucene 的索引慢两到三倍,具体取决于语言。 对于平均大小的查询,搜索性能应该不会受到显著影响。
英语分析器
默认分析器为 Standard Lucene,它适用于英语,但可能不如 Lucene 的英语分析器或 Microsoft 的英语分析器那样适用。
Lucene 的英语分析器扩展了标准分析器。 它从字词中删除所有格(尾部的 's)、根据 Porter 词干分解算法应用词干分解,并删除英语非索引字。
Microsoft 的英语分析器执行词形还原,而不是词干分解。 这意味着它可以更好地处理发生了词尾变化的字词形式以及不规则的字词形式,从而产生相关度更高的搜索结果。
如何指定语言分析器
在创建索引期间设置分析器,然后再为其加载数据。
在字段定义中,确保将字段的属性设置为“可搜索”且字段类型为 Edm.String。
将“analyzer”属性设置为支持的分析器列表中的语言分析器之一。
“analyzer”属性是唯一会接受语言分析器的属性,用于索引编制和查询。 其他与分析器相关的属性(“searchAnalyzer”和“indexAnalyzer”)不会接受语言分析器。
无法自定义语言分析器。 如果分析器不符合要求,请使用 microsoft_language_tokenizer 或 microsoft_language_stemming_tokenizer 创建自定义分析器,并添加用于词汇切分前和词汇切分后处理的筛选器。
以下示例演示索引中的语言分析器规范:
{
"name": "hotels-sample-index",
"fields": [
{
"name": "Description",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "en.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
{
"name": "Description_fr",
"type": "Edm.String",
"retrievable": true,
"searchable": true,
"analyzer": "fr.microsoft",
"indexAnalyzer": null,
"searchAnalyzer": null
},
有关创建索引和设置字段属性的详细信息,请参阅创建索引 (REST)。 要详细了解文本分析,请参阅 Azure AI 搜索中的分析器。
支持的语言分析器
下面列出了受支持语言的列表以及 Lucene 和 Microsoft 分析器名称。
语言 | Microsoft 分析器名称 | Lucene 分析器名称 |
---|---|---|
阿拉伯语 | ar.microsoft | ar.lucene |
亚美尼亚语 | hy.lucene | |
Bangla | bn.microsoft | |
巴斯克语 | eu.lucene | |
保加利亚语 | bg.microsoft | bg.lucene |
加泰罗尼亚语 | ca.microsoft | ca.lucene |
简体中文 | zh-Hans.microsoft | zh-Hans.lucene |
中文(繁体) | zh-Hant.microsoft | zh-Hant.lucene |
克罗地亚语 | hr.microsoft | |
捷克语 | cs.microsoft | cs.lucene |
丹麦语 | da.microsoft | da.lucene |
荷兰语 | nl.microsoft | nl.lucene |
英语 | en.microsoft | en.lucene |
爱沙尼亚语 | et.microsoft | |
芬兰语 | fi.microsoft | fi.lucene |
法语 | fr.microsoft | fr.lucene |
加利西亚语 | gl.lucene | |
德语 | de.microsoft | de.lucene |
希腊语 | el.microsoft | el.lucene |
古吉拉特语 | gu.microsoft | |
希伯来语 | he.microsoft | |
Hindi | hi.microsoft | hi.lucene |
匈牙利语 | hu.microsoft | hu.lucene |
冰岛语 | is.microsoft | |
印度尼西亚语 | id.microsoft | id.lucene |
爱尔兰语 | ga.lucene | |
意大利语 | it.microsoft | it.lucene |
日语 | ja.microsoft | ja.lucene |
卡纳达语 | kn.microsoft | |
朝鲜语 | ko.microsoft | ko.lucene |
拉脱维亚语 | lv.microsoft | lv.lucene |
立陶宛语 | lt.microsoft | |
马拉雅拉姆语 | ml.microsoft | |
马来语(拉丁语系) | ms.microsoft | |
马拉地语 | mr.microsoft | |
挪威语 | nb.microsoft | no.lucene |
波斯语 | fa.lucene | |
波兰语 | pl.microsoft | pl.lucene |
葡萄牙语(巴西) | pt-Br.microsoft | pt-Br.lucene |
葡萄牙语(葡萄牙) | pt-Pt.microsoft | pt-Pt.lucene |
旁遮普语 | pa.microsoft | |
罗马尼亚语 | ro.microsoft | ro.lucene |
俄语 | ru.microsoft | ru.lucene |
塞尔维亚语(西里尔) | sr-cyrillic.microsoft | |
塞尔维亚语(拉丁) | sr-latin.microsoft | |
斯洛伐克语 | sk.microsoft | |
斯洛文尼亚语 | sl.microsoft | |
西班牙语 | es.microsoft | es.lucene |
瑞典语 | sv.microsoft | sv.lucene |
泰米尔语 | ta.microsoft | |
泰卢固语 | te.microsoft | |
泰语 | th.microsoft | th.lucene |
土耳其语 | tr.microsoft | tr.lucene |
乌克兰语 | uk.microsoft | |
乌尔都语 | ur.microsoft | |
越南语 | vi.microsoft |
名称带有 Lucene 批注的所有分析器都由 Apache Lucene 的语言分析器提供支持。