2

我正在尝试将 solr 设置为与我通过烧瓶 sqlalchemy orm 使用的 postgres db 一起使用。我为此目的找到了库 pysolr,但不清楚如何在 sqlalchemy 模型中设置挂钩以更新 solr 索引。有没有例子?

pysolr 建议通过 solr.add 手动插入文档,但不清楚如何分隔不同数据库表的索引。

在做了一些研究之后,我想出了以下方法,我想知道这是否是正确的方法:

  1. 在 ORM 模型中,挂钩 after_insert、after_update、after_remove 和 after_commit 并在这些事件中插入/更新/删除 solr 中的对象数据。

  2. 为了分离不同模型的数据,在 solr 文档的“id”字段中使用表名作为前缀。solr_id = db_table_name + db_id

  3. 当您进行搜索时,获取所有结果,手动过滤与所需 db 表匹配的那些,提取 id,根据这些 id 查找 db 并使用这些 db 结果。

有没有更好的方法来做到这一点?谢谢。

4

1 回答 1

0

SQLAlchemy并且Solr是不同的结构。我认为更好的解决方案是实现一个脚本来同步数据。运行脚本以更新新数据可能需要 30 分钟或一个小时。

在模型中绑定插入/更新/删除/提交机制不是好方法。因为如果您的 Solr 服务出现任何问题,您的网站(关于访问数据库)将受到影响。保持差异服务独立。

于 2014-02-18T08:36:58.367 回答