跳转到主要内容

连接器搜索引擎

项目描述

Beta License: AGPL-3 OCA/search-engine Translate me on Weblate Try me on Runboat

连接Odoo与外部搜索引擎的基础模块。此插件旨在作为其他实现特定搜索引擎的插件的基座。它设计为易于扩展和模块化。

目录

安装

此插件使用Python提供的原生json包。当重新计算记录的json时,新值与原始值进行比较,以确定是否需要导出到搜索引擎索引。这是通过比较两个json字符串的md5来完成的。当在大量记录上执行此过程时,如果json大且复杂,可能会很慢。为了加快此过程,您可以安装orjson包。

pip install orjson

用法

概述

搜索引擎是一种设计用于以易于通过搜索和分析查询查找信息的方式存储信息的系统。搜索引擎与数据库的主要区别在于,搜索引擎针对搜索和分析查询进行了优化,而数据库针对事务性和关系查询进行了优化。

此插件围绕以下4个主要概念设计

  • 搜索引擎后端 用于在Odoo中定义用于索引数据的搜索引擎类型。其主要责任是提供一个实例 odoo.addons.search_engine.tools.adapter.SearchEngineAdapter,该实例将用于与搜索引擎通信。

  • 搜索引擎索引用于在Odoo中定义数据将被索引的索引。索引始终与搜索引擎后端相关联。索引提供了用于管理放入索引的记录的模型数据生命周期的方法。为此,它使用

    • 由后端提供的SearchEngineAdapter与搜索引擎进行通信。

    • ModelSerializer,它用于将Odoo记录转换为可以索引到搜索引擎的字典。

    • JsonValidator,用于验证要索引到搜索引擎的数据。

    RecordSerializer和IndexDataValidator在索引本身上定义。当前插件只为IndexDataValidator提供默认实现。您可以在github仓库search-engine中找到基于jsonifier插件connector_search_engine_jsonifier的RecordSerializer实现。

  • 搜索引擎索引记录是一个混合(mixin),用于定义可以索引到搜索引擎索引的记录。混合提供了以下方法

    • 将记录添加到索引中。

    • 从索引中删除记录。

    • 将记录标记为索引中(搜索引擎绑定)以重新计算(当对记录进行修改可能影响索引到搜索引擎的数据时,应调用此方法。它将指示索引必须重新计算和重新索引记录)。

    它还确保当记录被解除链接时,它将从已索引的索引中删除。

  • 搜索引擎绑定是一个模型,它表示索引和索引到Odoo记录之间的链接。它允许您访问记录在搜索引擎中索引的数据。它还用于管理搜索引擎中的数据生命周期。当创建绑定时,它将被标记为需要计算。一旦数据被计算,绑定将被标记为需要索引。一旦数据被索引,绑定将被标记为已索引。如果链接的记录被解除链接,绑定将被标记为需要删除。一旦数据从搜索引擎中删除,绑定将被删除。

索引生命周期

索引生命周期基于以下步骤

  • 当记录被添加到索引时,将创建绑定并标记为需要计算。

  • 每5分钟调度一个cron作业将查找需要计算的绑定,并为每个绑定安排一个作业来重新计算JSON数据。

  • 当JSON数据被计算后,如果JSON有效且与上次计算的JSON不同,则绑定将被标记为需要导出。

  • 每5分钟调度一个cron作业将确保与搜索引擎的同步。它将

    • 查找需要导出的绑定,并为每个绑定安排一个作业将JSON数据导出到搜索引擎。一旦导出,绑定将被标记为“完成”。

    • 查找需要删除的绑定,并为每个绑定安排一个作业从搜索引擎中删除数据。一旦删除,绑定将被删除。

为了保持模型实例的数据与搜索引擎中索引的数据同步,当您进行可能影响索引到搜索引擎的数据的修改时,应在模型实例上调用方法_se_mark_to_update

  • 当调用方法_se_mark_to_update时,绑定将被标记为需要计算。

  • 从那里开始,将使用上述描述的相同过程来重新计算数据和将它们重新索引到搜索引擎中。

当模型实例取消链接时,绑定将被标记为要删除。从那时起,它将由与搜索引擎同步数据的作业进行处理。

已知问题/路线图

  • 实现基于ir.export链接到索引的绑定通用的触发器(目的是在修改配置在导出器中的字段时更新绑定)

变更日志

16.0.0.1.7 (2023-12-15)

错误修复

  • 在将新记录添加到索引之前,确保记录的模型与索引的模型兼容。

    在此更改之前,索引会静默忽略与索引模型不兼容的记录。这可能导致在稍后使用记录序列化为JSON并导出到搜索引擎时出现意外的行为和错误。(#177

  • 通过禁用绑定模型上“数据”字段的预取来降低内存消耗。

    “数据”字段是一个json字段,在绑定模型的视图或常见管理操作中不使用。这个json字段可以非常大。通过禁用预取,我们避免了给数据库和Odoo带来无用的数据过载。(#179

16.0.0.1.4 (2023-11-29)

错误修复

  • 修复了从具有来自不同 se.backend 的项目的记录集调用 export_recorddelete_record 方法时的错误。

    exportdelete 方法涉及使用 Backend Adapter 与目标搜索引擎通信。我们然后需要按后端处理绑定,调用正确的适配器,并同时确保对链接到同一后端的记录执行请求操作的批处理。(#173

16.0.0.1.2 (2023-11-28)

错误修复

  • 在“se.binding.state.updater”模型中添加缺少的描述。此外,确保模型定义的一致性,此更改还从服务器日志的注册加载时移除了一个警告消息。

    在运行测试时防止服务器日志中的警告消息。(#172

16.0.0.1.1 (2023-10-13)

错误修复

  • 修复了 s.indexable.record 模型上 se_binding_ids 字段的缓存问题。当创建、更新或删除绑定时,现在将无效化引用记录的 se_binding_ids 字段的缓存。这样,下次在此类操作之后访问字段时,值将重新计算以反映更改。(#163

16.0.0.1.0 (2023-10-13)

功能

  • 现在在 搜索引擎记录 对象上可用的操作是 更新状态。此操作允许您更新树视图中选定记录的状态。

    搜索引擎后端搜索引擎记录 视图中添加智能按钮,以快速访问绑定的记录。(#162

错误修复

  • 修复了搜索引擎绑定表单视图。现在数据字段和错误字段被正确显示,并适合表单的宽度。

    使Odoo的管理用户成为 搜索引擎连接器管理员 组的成员。(#162

12.0.x.y.z (YYYY-MM-DD)

待办事项

错误跟踪器

错误追踪在 GitHub Issues 上。如果在那里找不到您的问题报告,请检查是否已经有人报告了。如果您是第一个发现它的人,请通过提供详细且受欢迎的 反馈 来帮助我们解决它。

请不要直接联系贡献者寻求支持或技术问题的帮助。

致谢

作者

  • 阿克雷顿

  • ACSONE SA/NV

  • 坎普托坎

贡献者

维护者

本模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。

本模块是GitHub上的 OCA/search-engine 项目的一部分。

欢迎您贡献。要了解如何贡献,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

此版本没有可用的源分布文件。请参阅 生成分发存档 的教程。

构建分布

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面