2

我想了解如何正确使用目录。

我有大约 30 种有用的内容类型、大约 50 个 catalog.xml 中的索引和大约 45 个元数据。只有三种类型占据了网站的大部分数据——我可能需要数百万个。我一直在阅读,还有很多事情要做,但是我想在开始之前先进行基本配置。

这个页面告诉我任何非默认索引都不应该添加到portal_catalog。我什至读过有人解释删除一个或两个默认索引如何产生性能差异。

我的问题是:将索引划分为不同目录以及选择哪些目录索引哪些类型的规则是什么?

到目前为止,我已经创建了一个额外的目录,用于对我的“站点设置”对象的所有索引进行编目(我已经导致不再在 portal_catalog 中编制索引)。站点设置索引经常被使用,但比其他索引更少修改,所以我认为将它们与更频繁地重新索引的对象分开是正确的。我不确定这是否是主要考虑因素。

另一个类似的问题(我想解决的问题的一个很好的例子):您将如何处理诸如辅助工作流 review_state 变量之类的问题?我给每个工作流的 review_state 变量一个索引(并经常搜索它们),但我的一些工作流仅用于少数类型。(我最多产的对象有辅助工作流程......)

我将非常感谢您的建议!

坎贝尔

4

1 回答 1

3

这不会涵盖所有内容,但我会提出一些观点..

不在portal_catalog 中的任何东西都不适用于集合、folder_contents 视图、getFolderContents 方法、搜索、portlet 集合、相关项目(我认为)以及假设您正在使用portal_catalog 的任何其他东西。

当我需要能够查询数据但它只影响内容对象的子集时,我喜欢使用额外的目录。

使用collective.indexing 来加速索引操作。

将目录挂载在它们自己的挂载点上,这样您就可以将它们与站点的其余部分不同地缓存(这样您就可以缓存整个目录)。然后,您甚至可以从专用 zeoserver 提供目录。

此外,如果您的内容不必通过 portal_catalog 进行编目(列出所有约束),您甚至可能首先需要考虑是否需要将其作为成熟的(原型|灵巧)类型。您可以使用更精简的 repoze.catalog 来对任意对象(可能是非常简单的数据)进行分类,无论您的目的是什么,并获得更高的性能。或者更好的是,查看 Solr 以对其进行索引以获得非常好的性能。

更重要的是,根据您存储的数据类型,您甚至可以考虑使用关系数据库进行数据存储。但我不知道你有什么样的查询、索引、数据等......

30 种不同的类型似乎很多,但我不知道您的用例是什么。愿意分享吗?也许有更好的方法来做到这一点。

于 2012-04-17T01:17:10.950 回答