OdooWiki OCA HUB

Connector Search Engine

connector_search_engine folder_open OCA/search-engine open_in_new
Generic Modules Licencia: AGPL-3

Módulo base para conectar Odoo con motores de búsqueda externos. Este addon está pensado para usarse como base para otros addons que implementen motores de búsqueda específicos. Está diseñado para ser fácilmente extensible y modular.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 18.0

Conecta Odoo a motores de búsqueda externos definiendo backends, índices y vinculaciones por registro, y luego recalcula, exporta y elimina los datos del índice en segundo plano. Es un framework base: la conexión real con el motor de búsqueda la proporcionan otros addons.

Este módulo añade un área de Search Engine a Odoo donde se configuran las conexiones a motores de búsqueda externos y se gestiona qué registros de Odoo se indexan.

  • En Search Engine > Configuration > Backends se crea un backend (nombre, nombre técnico, prefijo del índice, tipo) y se usa el botón Test Connection para verificar la configuración.
  • En Search Engine > Indexes se crean índices vinculados a un backend, un modelo de Odoo, un idioma opcional y una configuración de índice, con tamaños de lote para exportar y recalcular.
  • En un índice se dispone de botones para recalcular y exportar todos los bindings, exportar todos los bindings, exportar la configuración, limpiar el índice y reindexar (algunos restringidos al grupo de responsables).
  • En Search Engine > Bindings se ve una línea por cada par registro/índice con su estado, fechas, error y datos JSON; se puede forzar un recálculo o una exportación forzada desde el formulario.

Comportamiento automático: los bindings pasan por estados (to recompute, recomputing, to export, exporting, done, invalid data, fail to recompute, to delete, deleting). Un registro solo puede estar vinculado una vez por índice, y el modelo del binding debe coincidir con el modelo del índice. El recálculo y la exportación se ejecutan como trabajos en segundo plano por lotes, y tres acciones planificadas generan los trabajos para recalcular y exportar por índice. Los registros que usan el mixin indexable obtienen un botón inteligente que muestra cuántos bindings están hechos, pendientes o en error. Eliminar un registro o archivarlo marca sus bindings para que se eliminen del índice.

Menús que añade

Search EngineIndexesse_binding_menuConfigurationBackendsIndex configurations
Modelos y campos (7)
  • se.index · modelo nuevoname, color (Color Index), lang_id (Lang), model_id (Model), config_id (Config), count_all, backend_id (Backend), count_done, binding_ids, count_error, count_pending, serializer_type, custom_tech_name, batch_exporting_size, batch_recomputing_size
  • se.backend · modelo nuevoname, index_ids, binding_ids, backend_type (Type), binding_count, index_prefix_name
  • se.binding · modelo nuevodata, error, state, res_id (Record ID), index_id (Index), record_id, res_model, backend_id (Search Engine Backend), data_display, date_recomputed, date_synchronized
  • se.index.config · modelo nuevoname, body_str
  • ir.actions.actions · amplía un modelo existente
  • se.indexable.record · modelo nuevose_binding_ids (Seacrh Engine Bindings), count_se_binding_done, count_se_binding_error, count_se_binding_total, count_se_binding_pending
  • se.binding.state.updater · modelo nuevostate (New state)

Texto generado por IA (DeepSeek) al leer el código de la versión 18.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 6 confirmadas, 3 sin información de 9 versiones.

Fuentes · Odoo 15.0

Confirmado el 2026-11-03 en la rama 15.0 de OCA/search-engine.

terminal Instalación y uso

Documentación de OCA · Odoo 18.0

Este addon utiliza el paquete nativo json de python. Cuando se recalcula un json para un registro, el nuevo valor se compara con el original para ver si es necesaria una exportación al índice del motor de búsqueda. Esto se hace comparando el md5 de las dos cadenas json. Este proceso, cuando se realiza sobre un gran número de registros, puede ser lento cuando el json es grande y complejo. Para acelerar este proceso puedes instalar el paquete orjson.

pip install orjson

Descripción general

Un motor de búsqueda es un sistema diseñado para almacenar información de forma que sea fácil de encontrar mediante consultas de búsqueda y analíticas. La principal diferencia entre un motor de búsqueda y una base de datos es que un motor de búsqueda está optimizado para consultas de búsqueda y analíticas, mientras que una base de datos está optimizada para consultas transaccionales y relacionales.

Este addon está diseñado en torno a 4 conceptos principales:

  • El backend del motor de búsqueda se utiliza para definir en Odoo el tipo de motor de búsqueda que se utilizará para indexar los datos. Su responsabilidad principal es proporcionar una instancia de odoo.addons.search_engine.tools.adapter.SearchEngineAdapter que se utilizará para comunicarse con el motor de búsqueda.
  • El índice del motor de búsqueda se utiliza para definir en Odoo el índice donde se indexarán los datos. Un índice siempre está vinculado a un backend de motor de búsqueda. El índice proporciona métodos para gestionar el ciclo de vida de los datos introducidos en el índice para los registros de un modelo dado. Para ello, utiliza:
  • El SearchEngineAdapter proporcionado por el backend para comunicarse con el motor de búsqueda.
  • Un ModelSerializer que se utiliza para transformar un registro de odoo en un diccionario que pueda indexarse en el motor de búsqueda.
  • Un JsonValidator que se utiliza para validar los datos que se van a indexar en el motor de búsqueda. El RecordSerializer y el IndexDataValidator se definen en el propio índice. El addon actual proporciona una implementación predeterminada solo para el IndexDataValidator. Puedes encontrar en el repositorio de github search-engine una implementación del RecordSerializer basada en el addon jsonifier connector_search_engine_jsonifier.
  • El registro indexable del motor de búsqueda es un mixin que se utiliza para definir los registros que pueden indexarse en un índice del motor de búsqueda. El mixin proporciona métodos:
  • Para añadir un registro a un índice.
  • Para eliminar un registro de un índice.
  • Para marcar el registro en un índice (los enlaces del motor de búsqueda) como pendiente de recálculo (este método debe llamarse cuando se realizan modificaciones en el registro que podrían afectar a los datos indexados en el motor de búsqueda. Indicará al índice que el registro debe recalcularse y reindexarse). También garantiza que, cuando se desvincula el registro, se elimine de los índices en los que estaba indexado.
  • El enlace del motor de búsqueda es un modelo que representa el vínculo entre un índice y un registro indexable de odoo. Te da acceso a los datos indexados en el motor de búsqueda para el registro. También se utiliza para gestionar el ciclo de vida de los datos en el motor de búsqueda. Cuando se crea un enlace, se marca como pendiente de cálculo. Una vez calculados los datos, el enlace se marca como pendiente de indexación. Una vez indexados los datos, el enlace se marca como indexado. Si se desvincula el registro enlazado, el enlace se marca como pendiente de eliminación. Una vez eliminados los datos del motor de búsqueda, se elimina el enlace.

Ciclo de vida de la indexación

El ciclo de vida de la indexación se basa en los siguientes pasos:

  • Cuando se añade un registro a un índice, se crea un enlace y se marca como pendiente de cálculo.
  • Un cron job programado cada 5 minutos buscará los enlaces pendientes de cálculo y, para cada uno de ellos, programará un job para recalcular los datos json.
  • Cuando se calculan los datos json, el enlace se marca como pendiente de exportación si el json es válido y es diferente del calculado la última vez.
  • Un cron job programado cada 5 minutos garantizará la sincronización con el motor de búsqueda. Hará lo siguiente:
  • buscar los enlaces pendientes de exportación y, para cada uno de ellos, programará un job para exportar los datos json al motor de búsqueda. Una vez exportados, el enlace se marca como 'done'.
  • buscar los enlaces pendientes de eliminación y, para cada uno de ellos, programará un job para eliminar los datos del motor de búsqueda. Una vez eliminados, se elimina el enlace.

Para mantener sincronizados los datos de la instancia de tu modelo y los datos indexados en el motor de búsqueda, debes llamar al método _se_mark_to_update en la instancia del modelo cuando realices modificaciones que podrían afectar a los datos indexados en el motor de búsqueda.

  • Cuando se llama al método _se_mark_to_update, el enlace se marca como pendiente de cálculo.
  • A partir de ahí, se utilizará el mismo proceso descrito anteriormente para recalcular los datos y reindexarlos en el motor de búsqueda.

Cuando se desvincula una instancia de modelo, el enlace se marca como pendiente de eliminación. A partir de ahí, será procesado por el job que sincroniza los datos con el motor de búsqueda.

> [!NOTE] > En versiones anteriores de este addon, no había ningún método para marcar un > registro como pendiente de recálculo. Como consecuencia, todos los registros se > recalculaban cada día para garantizar que los datos en el motor de búsqueda > estuvieran actualizados. Esto suponía un problema de rendimiento y consumía muchos > recursos. Si a pesar de esto quieres recalcular todos los registros > cada día, puedes activar el cron job Search engine: recompute all > index y desactivar el llamado earch engine: Generate job for > recompute binding para recalcular por índice.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.