You are here: Home Zope products ManagableIndex

ManagableIndex (1.1)

by Ihor Berehulyak last modified 2009-01-13
Released on 2005-09-16 by Dieter Maurer for Zope 2 under Unavailable License available for All platforms.
Software development stage: development
ManagableIndex is a flexible indexing framework. It comes with efficient, flexible, highly customizable field, keyword, path, range and word indexes and allows to easily build new index types on top of it.

ManagableIndex can mean different things for different people. For a content manager, it brings flexible field, keyword and efficient range 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: when you want case insensitive searches, you can implement case folding during normalization.
    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 now requires Zope 2.7+ and Python 2.3.3+.

ManagableIndex requires OFolder. You can download OFolder from this same page.

Version 1.1 fixes the test suite such that it passes on Zope 2.8.x.
Warning: The test suite failure revealed an essential change in Zope 2.8.1: Until Zope 2.7, TALES expressions have been trusted when used outside of Zope; from Zope 2.8 on, TALES expression evaluation is always subject to Zope's security restrictions even when used outside of Zope. This may have strange consequences when you perform index management (e.g. mass reindexing) in an external script (run outside of Zope). In such cases, you should probably let the script login as a Zope user with sufficient priviledges.

Version 1.1

 Zope 2.8/ZODB 3.4 compatibility.

Version 1.0 uses IncrementalSearch2 when it is installed.

Version 0.13 no longer uses 'IncrementalSearch' for 'or' unless explicitely called for because multiunion is much faster.

Version 0.12 fixes a typo in "Managable PathIndex".

Version 0.11 fixes a bug reported by Santi Camps (thank you, Santi!): "or"s with more than 5 involved sets returned all results, when IncrementalSearch has not been installed.

New in version 0.10:

New in version 0.9:

  • Most string and unicode based ManagableIndexes now support glob and regular expression matching (exception RangeIndex).
  • New WordIndex for minimal transaction and load sizes.

New in version 0.8:

  • Fix: "Evaluator.Eval" were not persistent. Cannot pickle code object exceptions could result from this bug.
    Attention: The change might cause existing instances to break (with an exception when an "Eval" instance is loaded). In this case, you may need to rebuild the affected ManagableIndex (sorry!).
  • Fix: Empty minimal and maximal values in RangeIndexes were not handled correctly.
  • RangeIndexes support the new boolean property Orginisation 'high-then-low'. When true, the high index is primary and the low one subordinate. Check this for normally used date range indexes.

New in version 0.7:

  • Improved handling of bugs in TALES expressions. The behaviour is however still not optimal.

New in version 0.6:

  • made large range searches much more efficient (sometimes several orders of magnitude)

New in version 0.5:

  • RangeIndex now efficiently supports improper ranges, i.e. ranges with at least one unrestricted boundary,
  • a RangeIndex can now be used as a (partial) plugin replacement for CMF's effective and expires indexes.

New in version 0.4:

  • Efficient DateTime and Date indexes,
  • efficient RangeIndexes,
  • optimization for AdvancedQuerys descending sorting.
Document Actions
Powered by Plone