Comment faire en sorte qu’ElasticPress renvoie les bons résultats par langue
Découvrez comment configurer la recherche multilingue sur un site WordPress utilisant WPML et ElasticPress. L’extension de compatibilité WPML ElasticPress crée un index Elasticsearch distinct pour chaque langue de votre site, de sorte qu’un visiteur effectuant une recherche depuis la version française obtienne des résultats en français – jamais mélangés avec des résultats en anglais ou en japonais. Cette page couvre la configuration, la synchronisation par langue et, plus important encore, la façon de vérifier que la recherche renvoie les bons résultats dans chaque langue.
Il n’y a rien à traduire dans l’intégration ElasticPress. L’extension de compatibilité permet à ElasticPress de renvoyer automatiquement des résultats dans la bonne langue ; votre tâche consiste à installer les éléments, à exécuter la synchronisation initiale et à confirmer que les résultats semblent corrects.
Avant de commencer
Installez et activez ces extensions sur le même site :
- ElasticPress. L’extension open source gratuite de 10up, disponible sur WordPress.org (s'ouvre dans un nouvel onglet).
- Le noyau de WPML ainsi que WPML Traduction de chaînes.
- WPML ElasticPress. L’extension de compatibilité. Téléchargez-la depuis la page des téléchargements de votre compte WPML.
Vous avez également besoin d’un point de terminaison Elasticsearch : auto-hébergé, ou un service géré tel que ElasticPress.io (s'ouvre dans un nouvel onglet), Elastic Cloud ou AWS OpenSearch. Configurez ElasticPress avec votre hôte Elasticsearch et confirmez que l’indexation s’effectue avec succès sur un site unilingue avant d’ajouter la couche WPML.
Configurez vos langues WPML avant d’exécuter la première synchronisation.
Comment fonctionne l’indexation par langue
WPML ElasticPress crée un index Elasticsearch distinct pour chaque langue de votre site. L’index de chaque langue contient :
- Les traductions dans cette langue pour chaque type de publication traduisible.
- Les publications dans la langue par défaut pour tout type de publication configuré pour se rabattre sur la langue par défaut lorsqu’aucune traduction n’existe.
- Des copies des publications non traduisibles. L’index de chaque langue les inclut afin qu’elles puissent apparaître dans les résultats de recherche, quelle que soit la langue du visiteur.
Chaque document d’un index de langue est analysé dans cette langue. Les mots vides, la racinisation, les abréviations, ainsi que la gestion des pluriels et des temps sont tous spécifiques à la langue. C’est ce qui permet à une recherche en français de correspondre aux racines françaises et à une recherche en japonais de correspondre à la morphologie japonaise ; sans analyse par langue, le moteur de recherche appliquerait les règles d’une langue au texte de toutes les autres langues.
Pour la recherche de chaque visiteur, WPML ElasticPress achemine la requête vers l’index de langue correspondant. Le groupe de résultats est déjà filtré dans la bonne langue avant que le classement par pertinence ne commence.
Exécutez la synchronisation initiale
Une fois les quatre extensions actives et un point de terminaison Elasticsearch configuré dans ElasticPress, exécutez la synchronisation initiale :
- Ouvrez ElasticPressSync dans l’interface d’administration de WordPress.
- Cliquez sur Start Sync.
WPML ElasticPress déclenche une synchronisation par langue et crée les index par langue les uns après les autres. Sur un grand site, cela peut prendre quelques heures ; la page indique la progression au fur et à mesure de la synchronisation.
Si vous effectuez une mise à jour de WPML ElasticPress 1.0 vers 2.0 ou une version ultérieure, réindexez. Le format de l’index a changé lorsque la version 2.0 a introduit les index par langue.
Après la synchronisation initiale, les mises à jour de contenu sont automatiquement intégrées au bon index. Chaque fois que vous créez, modifiez ou supprimez une publication, WPML ElasticPress met à jour l’index de langue correspondant en arrière-plan en fonction de la langue de cette publication ou du paramètre de traduction de son type de publication.
Indexer des langues spécifiques avec WP-CLI
Pour les grands sites, les tâches planifiées, les scripts de déploiement ou tout flux de travail où l’interface d’administration n’est pas une option, WPML ElasticPress fournit une commande WP-CLI (wp wpml_elasticpress sync) qui enveloppe la propre synchronisation CLI d’ElasticPress et ajoute un indicateur --post-lang pour la sélection de la langue.
Exécutez la synchronisation initiale pour les publications en anglais uniquement :
wp wpml_elasticpress sync --setup --post-type=post --post-lang=en
L’indicateur --setup efface les index existants avant la reconstruction. Après cette commande, la recherche en anglais renvoie des résultats en anglais ; les recherches depuis d’autres langues ne renvoient rien car leurs index n’ont pas encore été créés.
Ajoutez une deuxième langue sans effacer les index existants :
wp wpml_elasticpress sync --post-type=post --post-lang=fr
Répétez l’opération pour chaque langue supplémentaire. Omettez --setup afin que les langues précédemment indexées restent en place.
Synchronisez plusieurs langues en une seule exécution :
wp wpml_elasticpress sync --post-lang=en,es
Ajustez la taille du lot si la mémoire est limitée :
wp wpml_elasticpress sync --per-page=200
La taille de lot par défaut est de 350 ; la réduire est utile sur les serveurs à mémoire limitée.
Reconstruisez chaque index à partir de zéro :
wp wpml_elasticpress sync --setup
Cela efface chaque index de langue et les reconstruit tous. Utilisez cette commande lorsque quelque chose semble anormal dans toutes les langues ou après une mise à jour majeure.
Comment vérifier que les recherches ElasticPress renvoient le contenu dans la bonne langue
La synchronisation technique est simple ; la valeur de cette page réside dans la vérification. Parcourez ces vérifications une fois la synchronisation initiale terminée, et à nouveau chaque fois que vous modifiez du contenu ou des paramètres qui affectent le comportement de la recherche.
1. La recherche renvoie des résultats dans la même langue pour chaque langue
Depuis l’interface publique, basculez le sélecteur de langue sur chaque langue tour à tour et recherchez un terme dont vous savez qu’il existe sous forme traduite.
- Succès. La page de résultats ne répertorie que les publications dans cette langue.
- Échec. Des résultats d’autres langues apparaissent aux côtés des correspondances dans la même langue. La synchronisation peut ne pas s’être terminée pour cette langue – vérifiez s’il y a des erreurs dans ElasticPressSync et exécutez à nouveau la commande WP-CLI spécifique à la langue.
2. Le contenu uniquement dans la langue source ne renvoie aucun résultat dans les autres langues
Choisissez une publication qui n’existe que dans votre langue par défaut – aucune traduction dans les autres langues du site. Depuis une version du site dans une langue autre que celle par défaut, recherchez une phrase de cette publication.
- Succès. Aucun résultat. La publication n’est pas traduite dans la langue du visiteur, elle ne devrait donc pas apparaître.
- Échec. La publication apparaît dans les résultats. Cela signifie généralement que le type de publication est configuré pour se rabattre sur la langue par défaut dans WPMLParamètresTraduction des types de publication. Il s’agit d’un paramètre au niveau de WPML, et non d’un bogue. Si vous ne souhaitiez pas ce comportement, modifiez le paramètre.
3. Les articles similaires restent dans la même langue
Ouvrez une publication traduite sur l’interface publique. Le widget Articles similaires ne devrait répertorier que d’autres publications dans la même langue.
- Succès. Chaque article similaire renvoie vers du contenu dans la même langue que la page actuelle.
- Échec. Des articles similaires d’autres langues apparaissent. Confirmez que la fonctionnalité Articles similaires est activée dans ElasticPressFonctionnalités et que la synchronisation de l’index de langue pour la langue actuelle est terminée.
4. La recherche de documents filtre par langue
Si la fonctionnalité Documents est activée dans ElasticPress : téléversez un PDF traduit sur la version dans la langue source d’une publication, puis téléversez un PDF dans une autre langue sur sa traduction. Recherchez une phrase qui n’apparaît que dans le PDF traduit.
- Succès. La recherche depuis l’interface publique de la langue correspondante renvoie le bon PDF ; la recherche dans la langue source ne renvoie pas le PDF traduit et vice versa.
- Échec. Des PDF d’autres langues apparaissent dans les résultats. Resynchronisez après avoir activé la fonctionnalité Documents. La commande
wp wpml_elasticpress sync --setupreconstruit chaque index avec l’indexation des documents.
5. Les recherches dans l’interface d’administration (termes, commentaires, utilisateurs) filtrent par langue
Si vous avez activé les fonctionnalités Termes, Commentaires ou Utilisateurs dans ElasticPressFonctionnalités, effectuez une recherche depuis l’interface d’administration de WordPress et confirmez que les résultats sont filtrés en fonction de la langue actuelle de l’administration. Cela affecte les utilisateurs qui effectuent des recherches dans l’interface d’administration d’un site multilingue.
6. La synchronisation multisite n’efface pas les index des sites frères
Si vous utilisez WPML et ElasticPress sur un réseau multisite, exécutez une synchronisation d’index sur un site, puis vérifiez les autres sites du réseau. Leurs index devraient toujours être intacts.
- Succès. L’indexation d’un site laisse les index des sites frères intacts.
- Échec. Les index frères sont vides. Arrêtez, réexécutez les synchronisations sur les sites concernés et signalez le problème à l’assistance de WPML afin qu’elle puisse confirmer si vous rencontrez un problème multisite historique ou un nouveau.
Si toutes les vérifications ci-dessus sont réussies, votre recherche multilingue fonctionne comme prévu.
Fonctionnalités ElasticPress prises en charge
WPML ElasticPress rend actuellement les fonctionnalités ElasticPress suivantes sensibles à la langue :
- Recherche de publications. Recherche sur l’interface publique dans les articles, les pages et les types de publication personnalisés.
- Articles similaires. Le widget d’articles similaires filtre pour afficher les correspondances dans la même langue.
- Documents. Recherche à l’intérieur des PDF joints,
.docx,.pptxet d’autres types de fichiers. - Termes, commentaires et utilisateurs. Recherches dans l’interface d’administration.
Les fonctionnalités de recherche spécifiques à WooCommerce d’ElasticPress (découverte de produits, filtrage de produits à facettes, recherche instantanée de produits dans les catalogues) ne sont actuellement pas multilingues. La couverture multilingue pour la recherche WooCommerce est sur la feuille de route de WPML ; en attendant, la recherche WooCommerce sur les sites multilingues passe par la gestion standard de WooCommerce Multilingual de WPML, et non par ElasticPress.
Pièges courants
- La synchronisation ne s’est pas exécutée après l’activation d’une nouvelle fonctionnalité ElasticPress. L’activation de Documents ou d’Articles similaires dans ElasticPressFonctionnalités n’ajoute pas rétroactivement ces documents à l’index. Resynchronisez après avoir activé ou désactivé des fonctionnalités.
- Synchronisation WP-CLI sans
--setupaprès un changement majeur. Si vous avez modifié les types de publication traduisibles, les fonctionnalités activées, ou si vous avez mis à jour WPML ElasticPress vers une version majeure supérieure, exécutezwp wpml_elasticpress sync --setuppour reconstruire chaque index à partir de zéro. - Le modèle de résultats de recherche du thème contourne les filtres d’ElasticPress. Certains thèmes personnalisés implémentent leur propre requête de résultats de recherche qui ne passe pas par ElasticPress. Si les résultats semblent incorrects uniquement sur l’interface publique (et passent les vérifications dans l’administration), le modèle du thème peut nécessiter une mise à jour.
- La recherche de produits WooCommerce renvoie des résultats dans plusieurs langues. Il ne s’agit pas d’un problème de synchronisation. C’est la lacune de couverture de WooCommerce mentionnée ci-dessus. Pour l’instant, acheminez la recherche de produits via la gestion standard de WooCommerce Multilingual.
- Le texte des documents n’apparaît pas dans la recherche. Confirmez que la fonctionnalité Documents est activée dans ElasticPressFonctionnalités et qu’une synchronisation a été exécutée depuis son activation.