azure-cognitive-search - 跨 37 种语言的 Azure 搜索
问题描述
我们有一个将英文内容和翻译内容(37 种语言)保存在 blob 存储中的网站。每个在 blob 中都有自己的文件夹结构。
下面的示例: Insider-progams/windows-insider/en-us/…一堆 json 文件来索引 Insider-progams/windows-insider/ru-ru/…一堆 json 文件来索引 Insider-progams/windows-insider/es -es/…一堆 json 文件来索引 Insider-progams/windows-insider/fr-fr/…一堆 json 文件来索引
我们目前有一个 .NET 服务,它充当 API 来获取此内容并将其返回到我们的 Angular Web 应用程序。但是,我们正在进入需要跨所有语言搜索内容的场景。
这是否意味着我们需要 37 个单独的索引?每种语言一个?或者我们只是传递一个参数来从 API 中获取我们想要的语言数据。
我还担心索引可能会变得多大以及构建需要多长时间。当新内容到达时,我们需要按需重建索引。
我们还打算使用搜索 API 来对我们的内容进行基本数据检索以及分页。
解决方案
您不需要为每种语言创建一个索引,每种语言只需要一列。请参阅https://docs.microsoft.com/en-us/azure/search/search-language-support,了解如何为每个列/语言使用不同的分析器创建索引。
索引器可以自动跟踪存储帐户中的 blob,以定期获取新 blob 并增量构建索引,而无需重新处理所有内容。
根据您的要求和用例,有一些填充索引的选项。最简单的选择是为每种语言创建一个索引器,按 blob 文件夹过滤,以索引中的相应列为目标。如果您需要更多语言功能或控制结构,请考虑向索引器添加技能集,该技能集能够检测语言、翻译、提取关键短语、根据条件做出决策或插入自定义技能。最后一个选项是自己管理在索引中添加/更新/删除文档,这对于将存储帐户中的任何更改反映在索引中具有最低的延迟。
请参阅搜索 API以搜索文档和分页结果。
推荐阅读
- reactjs - 如何为在 redux 中触发的动作设置拦截器
- java - 获取 java.lang.NoClassDefFoundError: 无法初始化类 oracle.jdbc.OracleDriver 异常
- node.js - { "code": "ECONNECTION", "command": "CONN" } 在 nodemailer
- azure - 如何在 Azure Kubernetes 服务中进行基于角色的访问控制?
- python - 为什么这个问题发生在我的第二个列表理解的python代码中而不是第一个?
- node.js - NodeJS - 我有一个带密码的 .key 文件,我需要使用 RSA PKCS8 方法获取 .pem 文件
- javascript - React - 如何处理传递给道具的html元素?
- sql-server - 查找重复行 - 保留一个条目
- mysql - 使用 MySQL 获取 JSON 行数组
- android - Dalvik 验证器:register1 v25 类型 0,想要参考