Modelagem de dados em várias linguagens do Atlas Search
Ethan Steininger, Harshad Dhavale2 min read • Published Sep 07, 2022 • Updated Sep 09, 2022
Avalie esse Tutorial
Vivemos numa economia cada vez mais globalizada. Por extensão, os usuários esperam que nossos aplicativos entendam o contexto de sua cultura e, por extensão, seu idioma.
Felizmente, a maioria dos mecanismos de busca – incluindo o Atlas Search – oferece suporte a várias linguagens. Este artigo abordará três opções de padrões de query, modelos de dados e definições de índice para atender às suas diversas necessidades de aplicativos multilíngues.
Para ilustrar as opções, criaremos um cenário fictício. Gerenciamos um aplicativo de pesquisa de receitas que oferece suporte a três países, e, por extensão, três idiomas: inglês, chinês (Kuromoji) e alemão. Nossos usuários estão localizados em todo o mundo e precisam pesquisar receitas no idioma nativo.
Temos um documento para cada linguagem na mesma coleção e, portanto, cada campo é indexado separadamente como sua própria linguagem. Isso simplifica os padrões de query e a UX às custas do armazenamento de índice inchado.
Documento:
Índice:
Query:
Prós:
- Uma única definição de índice.
- Não é necessário especificar o nome ou caminho do índice com base no idioma do usuário.
- Pode aceitar vários idiomas em uma única query.
Contras:
- À medida que mais campos são adicionados, a definição do índice precisa mudar.
- A carga útil da definição do índice é potencialmente muito grande (mapeamento de campo estático por idioma).
- Campos de indexação como idiomas irrelevantes causam um tamanho de índice maior do que o necessário.
Temos uma coleção e um índice por idioma, o que nos permite isolar os diferentes idiomas das receitas. Isso pode ser útil se tivermos mais receitas em alguns idiomas do que em outros, às custas de muitas coleções e índices.
Documentos:
Índice:
Query:
Prós:
- Pode copiar a mesma definição de índice para cada coleção (substituindo o idioma).
- Isolar documentos de linguagens diferentes.
Contras:
- Os desenvolvedores precisam fornecer antecipadamente o nome da linguagem no caminho do índice.
- Necessidade de copiar documentos entre coleções na atualização.
- Cada índice é um cursor de fluxo de alterações, portanto, sua manutenção pode ser cara.
Ao incorporar cada idioma em um campo pai, podemos colocalizar as traduções de cada receita em cada documento.
Documento:
Índice:
Query:
Prós:
- Mais fácil gerenciar documentos.
- A definição do índice é esparsa.
Contras:
- A carga útil da definição do índice é potencialmente muito grande (mapeamento de campo estático por idioma).
- Query e UX mais complexas.