ManagableIndex can mean different things for different people. For a content manager, it brings flexible field and keyword indexes managable via the ZMI to
* combine values from different sources, ignoring irrelevant values and transforming values in an inadequate form,
Example: index an object via title if it is non-empty but use id otherwise
Example: add portal_type to the Subject index transforming it into a sequence (as required by a keyword index).
* control acquisition and prevent acquired values to be indexed
* ignore stop-terms, normalize terms and check types
Example: when you do not want that an object is indexed under a meaningless default value, you can define this value as a stop-term
Example: the BTrees underlying Zope indexes require its keys to have a persistently consistent ordering. When this is not the case, they become corrupt. While modern Python versions (at least Python 2.3) compare values from different elementary types persistently consistent, the result can be quite unintuitive. Therefore, it is best when all terms in an index belong to the same types. Normalizing and type checking helps to ensure this.
For a developer, ManagableIndex provides a framework for index definition, improving on PluginIndexes. It provides for managability, automatically and intelligently handles unindexing when an object is reindexed and implements and, or and range queries (for not too complex indexes).
ManagableIndex requires OFolder. You can download OFolder from http://www.dieter.handshake.de/pyprojects/zope
More information: http://www.dieter.handshake.de/pyprojects/zope/ManagableIndex.html
Download: http://www.dieter.handshake.de/pyprojects/zope/ManagableIndex.tgz
Dieter