Engenharia

Apresentando os mecanismos de vários idiomas do Elastic App Search

Você pode otimizar seu mecanismo Elastic App Search para um idioma específico no momento da criação. Estamos começando com 13 idiomas, incluindo: inglês, espanhol, alemão, dinamarquês, russo, chinês, coreano e japonês.

Mas como isso altera a metodologia de busca subjacente? Como vai ajudar a melhorar a experiência de busca dos visitantes? Esses benefícios necessitam de configurações adicionais? Siga adiante para encontrar respostas a essas perguntas, ou consulte a documentação para começar agora.

O exercício? Analisar e usar o tokenizer

Buscar envolve analisar. A primeira análise acontece quando seu índice é embutido em seu mecanismo de busca. Durante o processo de indexação, o texto dentro do documento é convertido em tokens. Em seguida, os tokens são organizados como termos em relação ao índice.

Depois do índice estruturado, as consultas de busca são feitas em relação ao índice. O texto de entrada é analisado, convertido em tokens e comparado com os termos indexados. A relevância da busca será maior conforme os termos de busca forem mais semelhantes aos termos indexados.

Se você estiver usando o Elasticsearch para criar sua própria busca, poderá ser preciso configurar um ou mais analisadores para lidar melhor com a intensidade do idioma escolhido. A forma como os tokens são criados e como os termos são construídos está diretamente relacionada a como o analisador ou conjunto de analisadores foi configurado. Em casos típicos um analisador de idioma eficaz pode ser incluído como parte da criação básica de índice, mas configurações mais profundas necessitam do ajuste de filtros de caractere, de um tokenizer e de filtros de token.

O App Search remove toda essa complexidade, oferecendo uma solução otimizada baseada em API pronta para ser incluída em seu aplicativo. Para demonstrar como isso funciona, podemos ver como os App Search Engines agora são capazes de interpretar caracteres chineses.

Ganhando dinheiro do trabalho

A configuração básica dentro de um App Search Engine é Universal. Ela é uma boa configuração, ideal para a maioria dos casos de busca. Porém, quando um idioma for especificado, o App Search Engine vai usar um analisador personalizado otimizado para aquele idioma.

Por exemplo, na configuração Universal, a busca é esperta o bastante para consultar palavras da maneira como elas estão juntas dentro de um documento, em vez de fazer uma busca independente de cada palavra. Uma busca por hockey``taco não seria uma busca por hockey e taco separados um do outro. A busca seria por taco de hockey.

E isso é útil em inglês, ou em nossa correspondência de termos Universal, mas podemos ver que poderia causar uma certa confusão nas consultas de outros idiomas…

Este par de caracteres chineses representa a ideia de salário:

工资 : salário

Ele é composto por dois caracteres diferentes, trabalho e dinheiro

工 : trabalho 资 : dinheiro

Com a análise para um idioma desconhecido, o tokenizer vai separar os dois caracteres em dois tokens e procurar por correspondências de forma literal, sem levar a sintaxe em consideração.

Quando consideramos alguém fazendo uma busca em chinês por salário, seria esperado que essa pessoa recebesse resultados relacionados a dinheiro do trabalho em vez de salário. É fácil ver a confusão que pode acontecer!

Na configuração Universal, a busca vai encontrar resultados que consideram o relacionamento entre dinheiro do trabalho, assim como o taco de hockey. Mas, em chinês, os dois caracteres representam um conceito totalmente diferente.

Ao usar o analisador de chinês adequado, o sistema sabe que 工资 é um bigrama (um par de termos) e poderá criar um token para quando o par aparece junto, construindo o termo adequado para salário dentro do índice. Assim, o bigrama 工资 será associado a salário em vez de dinheiro do trabalho. O token, quando combinado, tem um significado diferente de suas partes separadas.

No App Search

A configuração de um idioma específico no App Search agora faz parte de uma criação de mecanismo simples.

Se você estiver criando um App Search Engine por meio da API App Search, um POST será da seguinte forma. O código a seguir vai criar um novo mecanismo em chinês - zh - chamado panda:

curl -X POST 'https://host-xxxxxx.api.swiftype.com/api/as/v1/engines' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer private-xxxxxxxxxxxxxxxxxxxx' \
-d '{
  "name": "panda",
  "language": "zh"
}'

Os idiomas são correspondentes ao código de idioma. Os códigos seguem o IETF RFC 5646, que por sua vez corresponde ao ISO 639-1 e ISO 3166-1.

Se quiser usar uma interface gráfica para criar seu mecanismo, o seletor de idioma estará presente na criação de mecanismo durante a apresentação e no painel:

Select language dropdown within Engine creation

Você pode ver em qual idioma um mecanismo está configurado olhando no canto superior esquerdo, abaixo do nome do mecanismo. Se não houver um idioma configurado, o tipo será Universal.

A Chinese language Engine named panda

Agora que você tem um mecanismo especializado em um idioma em particular, é preciso fazer algo mais? Não! A análise avançada específica para cada idioma é feita toda vez que dados são indexados ao mecanismo. Depois disso, as consultas de busca naqueles idiomas vão aplicar o mesmo analisador relevante e otimizado que foi usado durante a indexação.

Resumo

Mesmo focando em apenas um valor, tipo de dados e idioma, realizar buscas ainda é um desafio técnico intimidante. As buscas são, na verdade, muito mais complexas: temos vários valores, tipos de dados, e uma grande amplitude de idiomas com os quais trabalhamos. O sonho ideal seria uma busca extremamente precisa, independente de idioma e tipo de dados, com o contexto previsto por aprendizagem de máquina.

Mas até lá, o Elastic App Search é uma maneira eficiente de incluir uma ampla experiência em busca nas suas aplicações. Com 13 idiomas já otimizados ao seu dispor, você pode se concentrar em construir experiências de busca de qualidade usando um painel intuitivo e APIs simples, dinâmicas e com boa manutenção. Inscreva-se para uma avaliação de 14 dias para experimentar as APIs e ver se o Elastic App Search é a escolha certa para você.

Atualização*: Agora o suporte de vários idiomas está disponível dentro do Elastic Site Search. Digite seu domínio, selecione o idioma e deixe o Site Search Crawler indexar as páginas para você. Depois disso, é só instalar o snippet e aproveitar uma experiência de busca de qualidade.*