Cómo hacer que ElasticPress devuelva los resultados correctos por idioma
Aprenda a configurar la búsqueda multilingüe en un sitio de WordPress que utiliza WPML y ElasticPress. El plugin de compatibilidad WPML ElasticPress crea un índice de Elasticsearch independiente para cada idioma de su sitio, de modo que un visitante que busque desde la versión en francés obtenga resultados en francés, sin mezclarlos nunca con los en inglés o japonés. Esta página cubre la configuración, la sincronización por idioma y, lo que es más importante, cómo verificar que la búsqueda devuelva los resultados correctos en cada idioma.
No hay nada que traducir en la integración de ElasticPress. El plugin de compatibilidad hace que ElasticPress devuelva automáticamente los resultados correctos para cada idioma; su trabajo consiste en instalar los elementos, ejecutar la sincronización inicial y confirmar que los resultados sean los correctos.
Antes de empezar
Instale y active estos plugins en el mismo sitio:
- ElasticPress. El plugin gratuito de código abierto de 10up, disponible en WordPress.org (se abre en una pestaña nueva).
- El núcleo de WPML además de WPML Traducción de cadenas.
- WPML ElasticPress. El plugin de compatibilidad. Descárguelo desde la página de descargas de su cuenta de WPML.
También necesita un endpoint de Elasticsearch: alojado por usted mismo, o un servicio gestionado como ElasticPress.io (se abre en una pestaña nueva), Elastic Cloud o AWS OpenSearch. Configure ElasticPress con su host de Elasticsearch y confirme que indexa correctamente en un sitio de un solo idioma antes de añadir la capa de WPML.
Configure sus idiomas de WPML antes de ejecutar la primera sincronización.
Cómo funciona la indexación por idioma
WPML ElasticPress crea un índice de Elasticsearch independiente para cada idioma de su sitio. El índice de cada idioma contiene:
- Traducciones a ese idioma para cada tipo de contenido traducible.
- Entradas en el idioma predeterminado para cualquier tipo de contenido configurado para recurrir al idioma predeterminado cuando no exista una traducción.
- Copias de entradas no traducibles. El índice de cada idioma las incluye para que puedan aparecer en los resultados de búsqueda independientemente del idioma del visitante.
Cada documento en un índice de idioma se analiza en ese idioma. Las palabras vacías, la derivación, las abreviaturas y el manejo de plurales y tiempos verbales son específicos de cada idioma. Esto es lo que hace que la búsqueda en francés coincida con las raíces francesas y la búsqueda en japonés con la morfología japonesa; sin un análisis por idioma, el motor de búsqueda aplicaría las reglas de un idioma al texto de todos los demás.
Para la búsqueda de cada visitante, WPML ElasticPress dirige la consulta al índice del idioma correspondiente. El conjunto de resultados ya está filtrado al idioma correcto antes de que comience la clasificación por relevancia.
Ejecute la sincronización inicial
Con los cuatro plugins activos y un endpoint de Elasticsearch configurado en ElasticPress, ejecute la sincronización inicial:
- Abra ElasticPressSync en el panel de administración de WordPress.
- Haga clic en Start Sync.
WPML ElasticPress activa una sincronización por idioma y construye los índices por idioma uno tras otro. En un sitio grande, esto puede tardar unas horas; la página informa del progreso a medida que se ejecuta la sincronización.
Si está actualizando de WPML ElasticPress 1.0 a la versión 2.0 o posterior, vuelva a indexar. El formato del índice cambió cuando la versión 2.0 introdujo los índices por idioma.
Después de la sincronización inicial, las actualizaciones de contenido fluyen automáticamente al índice correcto. Siempre que cree, modifique o elimine una entrada, WPML ElasticPress actualiza el índice de idioma correspondiente en segundo plano en función del idioma de esa entrada o de la configuración de traducción para su tipo de contenido.
Indexar idiomas específicos con WP-CLI
Para sitios grandes, tareas programadas, scripts de despliegue o cualquier flujo de trabajo en el que la interfaz de usuario de administración no sea una opción, WPML ElasticPress proporciona un comando WP-CLI (wp wpml_elasticpress sync) que envuelve la propia sincronización CLI de ElasticPress y añade un flag --post-lang para la selección de idioma.
Ejecute la sincronización inicial solo para las entradas en inglés:
wp wpml_elasticpress sync --setup --post-type=post --post-lang=en
El flag --setup borra los índices existentes antes de reconstruirlos. Después de este comando, la búsqueda en inglés devuelve resultados en inglés; las búsquedas desde otros idiomas no devuelven nada porque sus índices aún no se han construido.
Añada un segundo idioma sin borrar los índices existentes:
wp wpml_elasticpress sync --post-type=post --post-lang=fr
Repita la operación para cada idioma adicional. Omita --setup para que los idiomas indexados previamente se mantengan en su lugar.
Sincronice varios idiomas en una sola ejecución:
wp wpml_elasticpress sync --post-lang=en,es
Ajuste el tamaño del lote si la memoria es escasa:
wp wpml_elasticpress sync --per-page=200
El tamaño de lote predeterminado es 350; reducirlo ayuda en servidores con memoria limitada.
Reconstruya todos los índices desde cero:
wp wpml_elasticpress sync --setup
Esto borra todos los índices de idioma y los reconstruye todos. Utilice esta opción cuando algo parezca incorrecto en todos los idiomas o después de una actualización importante.
Cómo comprobar que las búsquedas de ElasticPress devuelven contenido en el idioma correcto
La sincronización técnica es sencilla; el valor de esta página está en la verificación. Realice estas comprobaciones después de que se complete la sincronización inicial, y de nuevo cada vez que cambie el contenido o la configuración que afecte al comportamiento de la búsqueda.
1. La búsqueda devuelve resultados en el mismo idioma desde cada idioma
Desde el front-end, cambie el selector de idiomas a cada idioma por turno y busque un término que sepa que existe en forma traducida.
- Correcto. La página de resultados enumera solo las entradas en ese idioma.
- Incorrecto. Los resultados de otros idiomas aparecen junto a las coincidencias del mismo idioma. Es posible que la sincronización no se haya completado para ese idioma: compruebe si hay errores en ElasticPressSync y vuelva a ejecutar el comando WP-CLI específico del idioma.
2. El contenido solo en el idioma de origen devuelve cero resultados en otros idiomas
Elija una entrada que exista solo en su idioma predeterminado (sin traducción en los otros idiomas del sitio). Desde una versión del sitio que no esté en el idioma predeterminado, busque una frase de esa entrada.
- Correcto. Cero resultados. La entrada no está traducida al idioma del visitante, por lo que no debería aparecer.
- Incorrecto. La entrada aparece en los resultados. Por lo general, esto significa que el tipo de contenido está configurado para recurrir al idioma predeterminado en WPMLConfiguraciónTraducción de tipos de entrada. Esa es una configuración a nivel de WPML, no un error. Si no tenía la intención de usar esta alternativa, cambie la configuración.
3. Las entradas relacionadas se mantienen en el mismo idioma
Abra una entrada traducida en el front-end. El widget Related Posts solo debería enumerar otras entradas en el mismo idioma.
- Correcto. Cada entrada relacionada enlaza a contenido en el mismo idioma que la página actual.
- Incorrecto. Aparecen entradas relacionadas de otros idiomas. Confirme que la característica Related Posts está activada en ElasticPressFeatures y que el índice de idioma para el idioma actual ha terminado de sincronizarse.
4. La búsqueda de documentos se filtra por idioma
Si la característica Documents está activada en ElasticPress: suba un PDF traducido a la versión en el idioma de origen de una entrada, y luego suba un PDF en un idioma diferente a su traducción. Busque una frase que aparezca solo en el PDF traducido.
- Correcto. La búsqueda desde el front-end del idioma coincidente devuelve el PDF correcto; la búsqueda en el idioma de origen no devuelve el PDF traducido y viceversa.
- Incorrecto. Aparecen PDF de otros idiomas en los resultados. Vuelva a sincronizar después de activar Documents. El comando
wp wpml_elasticpress sync --setupreconstruye todos los índices con la indexación de documentos.
5. Las búsquedas en el back-end (términos, comentarios, usuarios) se filtran por idioma
Si ha activado las características Terms, Comments o Users en ElasticPressFeatures, búsquelas desde el panel de administración de WordPress y confirme que los resultados se filtran por el idioma actual de administración. Esto afecta a los usuarios que buscan en el back-end de un sitio multilingüe.
6. La sincronización de un multisitio no borra los índices de los sitios hermanos
Si ejecuta WPML y ElasticPress en una red multisitio, ejecute una sincronización de índice en un sitio y luego compruebe los demás sitios de la red. Sus índices deberían seguir intactos.
- Correcto. La indexación de un sitio deja intactos los índices de los sitios hermanos.
- Incorrecto. Los índices hermanos están vacíos. Deténgase, vuelva a ejecutar las sincronizaciones en los sitios afectados e informe del problema al soporte de WPML para que puedan confirmar si se enfrenta a un problema histórico de multisitio o a uno nuevo.
Si todas las comprobaciones anteriores son correctas, su búsqueda multilingüe está funcionando según lo previsto.
Características de ElasticPress compatibles
Actualmente, WPML ElasticPress hace que las siguientes características de ElasticPress reconozcan el idioma:
- Post Search. Búsqueda en el front-end en entradas, páginas y tipos de contenido personalizado.
- Related Posts. El widget de entradas relacionadas filtra las coincidencias del mismo idioma.
- Documents. Búsqueda dentro de PDF adjuntos,
.docx,.pptxy otros tipos de archivos. - Terms, Comments y Users. Búsquedas en el back-end.
Las características de búsqueda específicas de WooCommerce de ElasticPress (descubrimiento de productos, filtrado de productos por facetas, búsqueda instantánea de productos en catálogos) no son multilingües actualmente. La cobertura multilingüe para la búsqueda de WooCommerce está en la hoja de ruta de WPML; hasta que llegue, la búsqueda de WooCommerce en sitios multilingües fluye a través del manejo estándar de WooCommerce Multilingual de WPML, no a través de ElasticPress.
Errores comunes
- La sincronización no se ejecutó después de activar una nueva característica de ElasticPress. Activar Documents o Related Posts en ElasticPressFeatures no añade retroactivamente esos documentos al índice. Vuelva a sincronizar después de activar o desactivar características.
- Sincronización WP-CLI sin
--setupdespués de un cambio importante. Si ha cambiado qué tipos de contenido son traducibles, qué características están activadas o ha actualizado WPML ElasticPress a una versión principal superior, ejecutewp wpml_elasticpress sync --setuppara reconstruir todos los índices desde cero. - La plantilla de resultados de búsqueda del tema omite los filtros de ElasticPress. Algunos temas personalizados implementan su propia consulta de resultados de búsqueda que no pasa por ElasticPress. Si los resultados se ven mal solo en el front-end (y superan las comprobaciones de administración), es posible que la plantilla del tema necesite una actualización.
- La búsqueda de productos de WooCommerce devuelve resultados en varios idiomas. Esto no es un problema de sincronización. Es la brecha de cobertura de WooCommerce mencionada anteriormente. Por ahora, dirija la búsqueda de productos a través del manejo estándar de WooCommerce Multilingual.
- El texto de los documentos no aparece en la búsqueda. Confirme que la característica Documents está activada en ElasticPressFeatures y que se ha ejecutado una sincronización desde su activación.