Viele Kataloganfragen basieren auf er Kombination indizierter Attribute. Üblicherweise arbeitet der ZCatalog jede dieser Anfragen sequentiell ab und berechnet die Schnittmenge zwischen jedem dieser Ergebnisse. Für große Sites mit vielen Objekten reduziert diese Strategie die Performance von Kataloganfragen deutlich. Der CompositeIndex von unimr.compositeindex hingegen kann jedoch bereits die Schnittmenge von Indizees der Typen FieldIndex und KeywordIndex bilden.
Installation
Um unimr.compositeindex zu installieren, muss es einfach als Egg im [buildout]-Abschnitt eingetragen werden:
[buildout] … eggs = … unimr.compositeindex
Anschließend kann es in der configure.zcml-Datei eines Produkts eingetragen werden:
<include package="unimr.compositeindex" />
Alternativ kann es auch als Wert für zcml im Abschnitt der Zope-Instanz eingetragen werden:
[instance] … zcml = unimr.compositeindex
Verwendung
Für das Generic Setup-Profil wird die catalog.xml-Datei erstellt mit folgendem Inhalt:
<?xml version="1.0"?> <object name="portal_catalog" meta_type="Plone Catalog Tool"> <index name="comp01" meta_type="CompositeIndex"> <indexed_attr value="is_default_page"/> <indexed_attr value="review_state"/> <indexed_attr value="portal_type"/> <indexed_attr value="allowedRolesAndUsers"/> </index> <column value="comp01"/> </object>
- index name
- Eine gültige ID Ihrer Wahl.
- indexed_attr value
- Name des Attributs eines Objekts, das in einer Anfrage verkettet werden soll.
Anschließend sollte im ZMI im Indexes-Reiter des Catalog Tools für diesen CompositeIndex noch Reindex angegeben werden. Jede Anfrage mit zwei oder mehr Komponenten des Composite key wird nun automatisch umgewandelt in eine Anfrage an den CompositeIndex.