TIP: You can type at any time to perform a new search.
Connector Search Engine
connector_search_engine · OCA/search-engine
- Repository
- OCA/search-engine · module folder · Try on Runboat
- Module version
- 1.1.0
- Category
- Generic Modules
- Folder size
- 0.26 MB
- License
- AGPL-3
- Application
- No
- Auto-installable
- No
- Website
- https://github.com/OCA/search-engine
- Last tracking update
- 2026-08-07 08:43:07
- Authors
- Camptocamp, Akretion, ACSONE SA/NV, Odoo Community Association (OCA)
- Maintainers
- Camptocamp, Akretion, ACSONE SA/NV, Odoo Community Association (OCA)
- Committers
- Simone Orsi, GitHub, Laurent Mignon (ACSONE), Denis Roussel, Ivàn Todorovich, sbejaoui, Thomas Binsfeld, François Honoré, hparfr, Florian da Costa, Sébastien BEAU, clementmbr, David Beal, kobros-tech, Benjamin Willig, Weblate, Arnaud LAYEC, Florian Mounier, beau sebastien, OCA-git-bot, oca-travis, Mourad EL HADJ MIMOUNE, oca-ci, Quentin Groulard, Héctor Villarreal Ortega, Laurent-Corron, Benoît, chafique.delli
- Odoo dependencies
- Python dependencies
- typing-extensions, unidecode, requests
- System dependencies
- None
- Required by
- connector_algolia, connector_elasticsearch, connector_search_engine_serializer_ir_export, connector_typesense, sale_channel_search_engine, search_engine_image_thumbnail, search_engine_serializer_pydantic
- Description
Base module for connecting Odoo with external search engines. This addon is intended to be used as a base for other addons that implement specific search engines. It's designed to be easily extensible and modular.
Code Analysis ⓘ
Views touched (12)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
se_backend_form_view |
se.backend | form | New | |
se_backend_tree_view |
se.backend.tree (in connector_search_engine) | se.backend | list | New |
se_binding_state_updater_form_view |
se.binding.state.updater.form (in connector_search_engine) | se.binding.state.updater | form | New |
se_binding_view_form |
se.binding | form | New | |
se_binding_view_search |
se.binding | search | New | |
se_binding_view_tree |
se.binding | list | New | |
se_index_config_form_view |
se.index.config.form (in connector_search_engine) | se.index.config | form | New |
se_index_config_tree_view |
se.index.config.tree (in connector_search_engine) | se.index.config | list | New |
se_index_form_view |
se.index.form | se.index | form | New |
se_index_kanban_view |
se.index | kanban | New | |
se_index_search_view |
se.index | search | New | |
se_index_tree_view |
se.index | list | New |
HTTP endpoints (0)
No HTTP endpoints found for this module.
Models touched (7)
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (6)
-
backend_typeSelectionrequired=Trueselection=[]string='Type' -
binding_countIntegercompute='_compute_binding_count' -
binding_idsOne2many → se.bindingargs: 'se.binding', 'backend_id' -
index_idsOne2many → se.indexargs: 'se.index', 'backend_id' -
index_prefix_nameCharhelp='Prefix for technical indexes tech name. You could use this to change index names based on current env.' -
nameCharrequired=True
-
action_open_bindings(self) -
action_test_connection(self) -
get_adapter(self, index=None) -> SearchEngineAdapterReturn an instance of the adapter for this backend
New fields (11)
-
backend_idMany2one → se.backendreadonly=Truerelated='index_id.backend_id'store=Truestring='Search Engine Backend' args: 'se.backend' -
dataJsonprefetch=Falsereadonly=True -
data_displayTextcompute='_compute_data_display'help='Include this in debug mode to be able to inspect index data.' -
date_recomputedDatetimereadonly=True -
date_synchronizedDatetimereadonly=True -
errorText -
index_idMany2one → se.indexondelete='cascade'readonly=Truerequired=Truestring='Index' args: 'se.index' -
record_idReferencecompute='_compute_record_id'readonly=Trueselection=<expr> -
res_idIntegerhelp='ID of the target record in the database'readonly=Truestring='Record ID' -
res_modelSelectionreadonly=Trueselection=<expr> -
stateSelectiondefault='to_recompute'readonly=True args: [('to_recompute', 'To recompute'), ('recomputing', 'Recomputing'), ('to_export', 'To export'), ('exporting', 'Exporting'), ('done', 'Done'), ('invalid_data', 'Invalid Data'), ('recompute_error', 'Fail to Recompute'), ('to_delete', 'To Delete'), ('deleting', 'Deleting')]
-
create(self, vals_list) -> Self@api.model_create_multiCreate a binding and compute its JSON. -
delete_record(self) -> str -
export_record(self) -> str -
get_export_data(self) -> <expr>Public method to retrieve export data. -
jobify_recompute_json(self, force_export: bool=False)Create batch job for records to recompute the json. -
recompute_from_owner(self) -
recompute_json(self, force_export: bool=False)"Compute index record data as JSON. -
record(self) -> models.Model@property -
unlink(self) -
write(self, vals) -> boolWrite a binding and compute its JSON.
New fields (1)
-
stateSelectionrequired=Trueselection=<expr>string='New state'
-
doit(self)
New fields (15)
-
backend_idMany2one → se.backendondelete='cascade'required=Truestring='Backend' args: 'se.backend' -
batch_exporting_sizeIntegerdefault=1000help='Batch size for exporting element' -
batch_recomputing_sizeIntegerdefault=50help='Batch size for recomputing element' -
binding_idsOne2many → se.bindingargs: 'se.binding', 'index_id', 'Binding' -
colorIntegercompute='_compute_count_binding'string='Color Index' -
config_idMany2one → se.index.configcomodel_name='se.index.config'help='Index configuration record'string='Config' -
count_allIntegercompute='_compute_count_binding' -
count_doneIntegercompute='_compute_count_binding' -
count_errorIntegercompute='_compute_count_binding' -
count_pendingIntegercompute='_compute_count_binding' -
custom_tech_nameCharhelp="Take control of index technical name. The final index name is still computed and contains in any case: backend index name prefix and language if given. If no custom name is provided, model's normalized name will be used." -
lang_idMany2one → res.langrequired=Falsestring='Lang' args: 'res.lang' -
model_idMany2one → ir.modeldomain=<expr>ondelete='cascade'required=Truestring='Model' args: 'ir.model' -
nameCharcompute='_compute_name'store=True -
serializer_typeSelectionargs: []
-
action_open_bindings(self) -
batch_recompute(self, force_export: bool=False) -> NoneRecompute all the bindings of the index marked as to_recompute. -
batch_sync(self, force_export: bool=False) -> None -
clear_index(self) -> None -
delete_obsolete_item(self, item_ids: <expr>) -
export_all_settings(self) -> None@api.model -
export_settings(self) -> None -
force_batch_sync(self) -> None -
generate_batch_recompute_per_index(self, domain: <expr>=None) -> None@api.modelGenerate a job for each index to recompute. This method is usually called by a cron. It will generate a job for each index to recompute. The recompute process will recompute the bindings marked as to_recompute. -
generate_batch_sync_per_index(self, domain: <expr>=None) -> None@api.modelGenerate a job for each index to sync. This method is usually called by a cron. It will generate a job for each index to sync. The sync will export the bindings marked as to_export. and will delete the bindings marked as to_delete. -
json_validator(self) -> JsonValidator@property -
model_serializer(self) -> ModelSerializer@property -
recompute_all_binding(self, force_export: bool=False) -
recompute_all_index(self, domain=None) -> None@api.model -
recompute_and_export_all_binding(self) -> None -
reindex(self) -> NoneReindex records according. -
resynchronize_all_bindings(self)Force sync between Odoo records and index records. This method will iter on all item in the index of the search engine if the corresponding binding do not exist on odoo it will create a job that delete all this obsolete items. You should not use this method for day to day job, it's only an helper for recovering your index after corruption. You can also drop index but this will introduce downtime, so it's better to force a resynchronization -
se_adapter(self) -> SearchEngineAdapter@property -
write(self, vals)
New fields (2)
-
body_strTextcompute='_compute_body_str'default='{}'inverse='_inverse_body_str'tracking=True -
nameCharrequired=True
No public methods.
New fields (5)
-
count_se_binding_doneIntegercompute='_compute_count_binding' -
count_se_binding_errorIntegercompute='_compute_count_binding' -
count_se_binding_pendingIntegercompute='_compute_count_binding' -
count_se_binding_totalIntegercompute='_compute_count_binding' -
se_binding_idsOne2many → se.bindingcomodel_name='se.binding'compute='_compute_binding_ids'compute_sudo=Truestring='Seacrh Engine Bindings'
-
open_se_binding(self) -
unlink(self) -
write(self, vals)
Loading…
Loading…
Loading…
Loading…
Loading…
Loading…