Como fazer o ElasticPress retornar os resultados certos por idioma
Aprenda a configurar a pesquisa multilíngue em um site WordPress que executa o WPML e o ElasticPress. O plugin de compatibilidade WPML ElasticPress cria um índice separado do Elasticsearch para cada idioma no seu site, de modo que um visitante pesquisando na versão em francês obtenha resultados em francês – nunca misturados com resultados em inglês ou japonês. Esta página aborda a configuração, a sincronização por idioma e, o mais importante, como verificar se a pesquisa retorna os resultados certos em cada idioma.
Não há nada para traduzir na integração do ElasticPress. O plugin de compatibilidade faz com que o ElasticPress retorne resultados corretos para o idioma automaticamente; seu trabalho é instalar os componentes, executar a sincronização inicial e confirmar se os resultados parecem corretos.
Antes de começar
Instale e ative estes plugins no mesmo site:
- ElasticPress. O plugin de código aberto gratuito da 10up, disponível no WordPress.org (abre em uma nova aba).
- Núcleo do WPML e WPML Tradução de Strings.
- WPML ElasticPress. O plugin de compatibilidade. Baixe-o na página de downloads da sua conta do WPML.
Você também precisa de um endpoint do Elasticsearch: auto-hospedado ou um serviço gerenciado como ElasticPress.io (abre em uma nova aba), Elastic Cloud ou AWS OpenSearch. Configure o ElasticPress no seu host do Elasticsearch e confirme se ele indexa com sucesso em um site de um único idioma antes de adicionar a camada do WPML.
Configure seus idiomas do WPML antes de executar a primeira sincronização.
Como funciona a indexação por idioma
O WPML ElasticPress cria um índice separado do Elasticsearch para cada idioma no seu site. O índice de cada idioma contém:
- Traduções para esse idioma para cada tipo de post traduzível.
- Posts no idioma padrão para qualquer tipo de post configurado para usar o idioma padrão como substituto quando não existir uma tradução.
- Cópias de posts não traduzíveis. O índice de cada idioma inclui essas cópias para que possam aparecer nos resultados da pesquisa independentemente do idioma do visitante.
Cada documento em um índice de idioma é analisado nesse idioma. Stopwords, stemming, abreviações, tratamento de plural e tempo verbal são todos específicos do idioma. É isso que faz com que a pesquisa em francês corresponda aos radicais franceses e a pesquisa em japonês corresponda à morfologia japonesa; sem a análise por idioma, o mecanismo de pesquisa aplicaria as regras de um idioma ao texto de todos os outros idiomas.
Para a pesquisa de cada visitante, o WPML ElasticPress direciona a consulta para o índice do idioma correspondente. O conjunto de resultados já é filtrado para o idioma certo antes do início da classificação de relevância.
Execute a sincronização inicial
Com os quatro plugins ativos e um endpoint do Elasticsearch configurado no ElasticPress, execute a sincronização inicial:
- Abra ElasticPressSync no painel de administração do WordPress.
- Clique em Start Sync.
O WPML ElasticPress aciona uma sincronização por idioma e cria os índices por idioma um após o outro. Em um site grande, isso pode levar algumas horas; a página relata o progresso à medida que a sincronização é executada.
Se você estiver atualizando do WPML ElasticPress 1.0 para a 2.0 ou posterior, reindexe. O formato do índice mudou quando a versão 2.0 introduziu os índices por idioma.
Após a sincronização inicial, as atualizações de conteúdo fluem para o índice certo automaticamente. Sempre que você cria, modifica ou exclui um post, o WPML ElasticPress atualiza o índice de idioma correspondente em segundo plano, com base no idioma desse post ou na configuração de tradução para o seu tipo de post.
Indexação de idiomas específicos com o WP-CLI
Para sites grandes, trabalhos agendados, scripts de implantação ou qualquer fluxo de trabalho em que a interface de administração não seja uma opção, o WPML ElasticPress fornece um comando do WP-CLI (wp wpml_elasticpress sync) que envolve a própria sincronização da CLI do ElasticPress e adiciona uma flag --post-lang para seleção de idioma.
Execute a sincronização inicial apenas para posts em inglês:
wp wpml_elasticpress sync --setup --post-type=post --post-lang=en
A flag --setup limpa os índices existentes antes da reconstrução. Após esse comando, a pesquisa em inglês retorna resultados em inglês; as pesquisas de outros idiomas não retornam nada porque seus índices ainda não foram criados.
Adicione um segundo idioma sem limpar os índices existentes:
wp wpml_elasticpress sync --post-type=post --post-lang=fr
Repita para cada idioma adicional. Omita --setup para que os idiomas indexados anteriormente permaneçam intactos.
Sincronize vários idiomas em uma única execução:
wp wpml_elasticpress sync --post-lang=en,es
Ajuste o tamanho do lote se a memória estiver limitada:
wp wpml_elasticpress sync --per-page=200
O tamanho padrão do lote é 350; reduzi-lo ajuda em servidores com restrição de memória.
Reconstrua todos os índices do zero:
wp wpml_elasticpress sync --setup
Isso limpa todos os índices de idioma e reconstrói todos eles. Use isso quando algo parecer errado em todos os idiomas ou após um grande upgrade.
Como verificar se as pesquisas do ElasticPress retornam conteúdo no idioma certo
A sincronização técnica é simples; o valor desta página está na verificação. Siga estas verificações após a conclusão da sincronização inicial e novamente sempre que você alterar conteúdo ou configurações que afetem o comportamento da pesquisa.
1. A pesquisa retorna resultados no mesmo idioma para cada idioma
No front-end, alterne o seletor de idiomas para cada idioma, um por vez, e pesquise um termo que você sabe que existe na forma traduzida.
- Aprovado. A página de resultados lista apenas posts nesse idioma.
- Reprovado. Resultados de outros idiomas aparecem junto com correspondências do mesmo idioma. A sincronização pode não ter sido concluída para esse idioma – verifique ElasticPressSync em busca de erros e execute novamente o comando do WP-CLI específico do idioma.
2. O conteúdo apenas no idioma de origem retorna zero resultados em outros idiomas
Escolha um post que exista apenas no seu idioma padrão – sem tradução nos outros idiomas do site. A partir de uma versão do site que não seja no idioma padrão, pesquise uma frase desse post.
- Aprovado. Zero resultados. O post não está traduzido para o idioma do visitante, portanto, não deve aparecer.
- Reprovado. O post aparece nos resultados. Isso geralmente significa que o tipo de post está configurado para usar o idioma padrão como substituto em WPMLConfiguraçõesTradução de tipos de post. Essa é uma configuração no nível do WPML, não um bug. Se você não pretendia usar o substituto, altere a configuração.
3. Os posts relacionados permanecem no mesmo idioma
Abra um post traduzido no front-end. O widget Related Posts deve listar apenas outros posts no mesmo idioma.
- Aprovado. Todos os posts relacionados têm links para conteúdo no mesmo idioma da página atual.
- Reprovado. Aparecem posts relacionados de outros idiomas. Confirme se o recurso Related Posts está ativado em ElasticPressFeatures e se o índice de idioma para o idioma atual terminou a sincronização.
4. A pesquisa de documentos filtra por idioma
Se o recurso Documents estiver ativado no ElasticPress: faça o upload de um PDF traduzido para a versão no idioma de origem de um post e, em seguida, faça o upload de um PDF em outro idioma para a sua tradução. Pesquise uma frase que apareça apenas no PDF traduzido.
- Aprovado. A pesquisa no front-end do idioma correspondente retorna o PDF certo; a pesquisa no idioma de origem não retorna o PDF traduzido e vice-versa.
- Reprovado. PDFs de outros idiomas aparecem nos resultados. Sincronize novamente após ativar o recurso Documents. O comando
wp wpml_elasticpress sync --setupreconstrói todos os índices com a indexação de documentos.
5. As pesquisas no back-end (termos, comentários, usuários) filtram por idioma
Se você ativou os recursos Terms, Comments ou Users em ElasticPressFeatures, pesquise-os no painel de administração do WordPress e confirme se os resultados são filtrados pelo idioma atual da administração. Isso afeta os usuários que pesquisam no back-end de um site multilíngue.
6. A sincronização em multisite não limpa os índices de sites irmãos
Se você executa o WPML e o ElasticPress em uma rede multisite, execute uma sincronização de índice em um site e depois verifique os outros sites da rede. Seus índices ainda devem estar intactos.
- Aprovado. A indexação de um site deixa os índices dos sites irmãos intocados.
- Reprovado. Os índices irmãos estão vazios. Pare, execute novamente as sincronizações nos sites afetados e relate o problema ao suporte do WPML para que eles possam confirmar se você está enfrentando um problema histórico de multisite ou um novo.
Se todas as verificações acima forem aprovadas, sua pesquisa multilíngue está funcionando conforme o projetado.
Recursos suportados do ElasticPress
Atualmente, o WPML ElasticPress torna os seguintes recursos do ElasticPress sensíveis ao idioma:
- Pesquisa de posts. Pesquisa no front-end em posts, páginas e tipos de post personalizados.
- Related Posts. O widget de posts relacionados filtra para correspondências no mesmo idioma.
- Documents. Pesquisa dentro de PDFs anexados,
.docx,.pptxe outros tipos de arquivo. - Terms, Comments e Users. Pesquisas no back-end.
Os recursos de pesquisa específicos do WooCommerce no ElasticPress (descoberta de produtos, filtragem facetada de produtos, pesquisa instantânea de produtos em catálogos) não são multilíngues no momento. A cobertura multilíngue para a pesquisa do WooCommerce está no roteiro do WPML; até que seja lançada, a pesquisa do WooCommerce em sites multilíngues flui pelo tratamento padrão do WooCommerce Multilingual do WPML, e não pelo ElasticPress.
Armadilhas comuns
- A sincronização não foi executada após a ativação de um novo recurso do ElasticPress. Ativar Documents ou Related Posts em ElasticPressFeatures não adiciona retroativamente esses documentos ao índice. Sincronize novamente após alternar os recursos.
- Sincronização do WP-CLI sem
--setupapós uma grande alteração. Se você alterou quais tipos de post são traduzíveis, quais recursos estão ativados ou fez um grande upgrade do WPML ElasticPress, executewp wpml_elasticpress sync --setuppara reconstruir todos os índices do zero. - O modelo de resultados de pesquisa do tema ignora os filtros do ElasticPress. Alguns temas personalizados implementam sua própria consulta de resultados de pesquisa que não passa pelo ElasticPress. Se os resultados parecerem errados apenas no front-end (e passarem nas verificações de administração), o modelo do tema pode precisar de atualização.
- A pesquisa de produtos do WooCommerce retorna resultados em idiomas misturados. Isso não é um problema de sincronização. É a lacuna de cobertura do WooCommerce mencionada acima. Por enquanto, direcione a pesquisa de produtos pelo tratamento padrão do WooCommerce Multilingual.
- O texto dos documentos não aparece na pesquisa. Confirme se o recurso Documents está ativado em ElasticPressFeatures e se uma sincronização foi executada desde a sua ativação.