ManagableIndex (1.1)
- ManagableIndex download link: http://www.dieter.handshake.de/pyprojects/zope/ManagableIndex.tgz
- Homepage of ManagableIndex: http://www.dieter.handshake.de/pyprojects/zope/ManagableIndex.html
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: addportal_type
to theSubject
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:
- Now uses the new incremental search engine, if installed.
- Several fixes with respect to unicode values.
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, thehigh
index is primary and thelow
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'seffective
andexpires
indexes.
New in version 0.4:
- Efficient
DateTime
andDate
indexes, - efficient
RangeIndex
es, - optimization for
AdvancedQuery
s descending sorting.