我想了解如何正确使用目录。
我有大约 30 种有用的内容类型、catalog.xml 中大约 50 个索引以及大约 45 个元数据。只有三种类型占了网站的大部分数据 - 而我可能需要数百万个这样的数据。我一直在阅读,还有很多事情要做,但我想在开始这一切之前先完成基本配置。
This page告诉我任何非默认索引不应添加到 Portal_catalog 中。我什至读过人们解释删除一个或两个默认索引如何产生性能差异。
我的问题是:将索引划分为不同的目录以及选择哪个目录索引哪种类型的规则是什么?
到目前为止,我已经创建了一个额外的目录,用于对我的“站点设置”对象的所有索引进行编目(我已导致该对象不再在 Portal_catalog 中建立索引)。站点设置索引经常使用,但比其他索引更很少修改,因此我认为将它们与更频繁地重新索引的对象分开是正确的。但我不确定这是否是主要考虑因素。
另一个类似的问题(我想要解决的问题的一个很好的例子):您将如何处理辅助工作流程 review_state 变量之类的问题?我为每个工作流程的 review_state 变量提供一个索引(并经常搜索它们),但我的一些工作流程仅用于少数类型。 (我最多产的对象有辅助工作流程......)
非常感谢您的建议!
坎贝尔
最佳答案
这并不能涵盖所有内容,但我会提出一些要点..
portal_catalog 中没有的任何内容都不适用于集合、folder_contents View 、getFolderContents 方法、搜索、portlet 集合、相关项目(我认为)以及假设您正在使用 Portal_catalog 的任何其他内容。
当我需要能够查询数据时,我喜欢使用附加目录,但它只影响内容对象的子集。
使用collective.indexing来加速索引操作。
将目录安装在其自己的安装点上,以便您可以以不同于站点其他部分的方式缓存它们(这样您就可以缓存整个目录)。然后,您甚至可以从专用的 zeo 服务器提供目录。
此外,如果您的内容不必由 Portal_catalog 编目(列出所有约束),您甚至可能需要考虑是否需要将其作为成熟的(原型(prototype) | 灵活性)类型第一名。无论您的目的是什么,您都可以使用更精简的 repoze.catalog 来编目任意对象(可能是非常简单的数据),并获得更高的性能。或者更好的是,研究 Solr 对其进行索引以获得非常好的性能。
此外,根据您存储的数据类型,您甚至可以考虑使用关系数据库进行数据存储。但我不知道你有什么样的查询、索引、数据等......
30 种不同的类型看起来很多,但我不知道你的用例是什么。愿意分享吗?也许有更好的方法来做到这一点。
关于plone - 决定何时创建新目录的规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10178933/