On May 5, 2006, at 9:13 AM, Terry Jones wrote:
This page
http://www.zope.org/Documentation/How-To/ZCatalogTutorial
[...]
I am happy to update the how-to page if someone tells me how to
access the
source or sends it to me.
Attached. :^) Thanks!
Regards,
Rob
--
Rob Page V: 540 361 1710
Zope Corporation F: 703 995 0412
{\rtf1\mac\ansicpg1\cocoartf824\cocoasubrtf330
{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww17640\viewh14640\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
\f0\fs24 \cf0 ZCatalog Tutorial\
This document provides a tutorial for ZCatalog, the new search\
engine machinery in Zope. The audience for the document is content\
managers.\
\
Contents\
What is it? What's it for? Why's it so cool?\
\
\
Installing ZCatalog\
\
\
ZCatalog Objects\
\
\
Example using ZCatalog\
\
\
Creating Search Forms And Result Reports\
\
\
Using ZCatalog In A Zope Site\
\
\
ZCatalog vs. Catalog\
\
\
\
What is it? What's it for? Why's it so cool?\
The ZCatalog provides powerful indexing and searching on a Zope\
database using a Zope management interface. A ZCatalog is a\
Zope object that can be added to a Folder, managed through the\
web, and extended in many ways.\
\
The ZCatalog is a very significant project, providing a number\
of compelling features:\
Searches are fast. The data structures used by the index\
provide extremely quick searches without consuming much memory.\
\
\
Searches are robust. The ZCatalog supports boolean\
search terms, proximity searches, synonyms and stopwords.\
\
\
Indexing is wildly flexible. A ZCatalog can catalog\
custom properties and track unique values. Since ZCatalog\
catalogs objects instead of file handles, you can index any\
content that can have a Python object wrapped around it. This\
also lets objects participate in how they are cataloged,\
e.g. de-HTML-ifying contents or extracting PDF properties.\
\
\
Usable outside of Zope. The software is broken into a\
Python Catalog which wrapped by a ZCatalog. The Python\
Catalog can be used in any Python program; all it requires is\
the Z object database and the indexing machinery from Zope.\
\
\
Transactional. An indexing operation is part of a Zope\
transaction. If something goes wrong after content is indexed,\
the index is restored to its previous condition. This also means\
that Undo will restore an index to its previous condition.\
Finally, a ZCatalog can be altered privately in a Version,\
meaning no one else can see the changes to the index.\
\
\
Cache-friendly. The index is internally broken into\
different "buckets", with each bucket being a separate Zope\
database object. Thus, only the part of the index that is needed\
is loaded into memory. Alternatively, an un-needed part of the\
index can be removed from memory.\
\
\
Results are lazy. A search that returns a tremendous\
number of matches won't return a large result set. Only the\
part of the results, such as the second batch of twenty, are\
returned.\
\
\
\
The ZCatalog is a free, Open Source part of the Zope software\
repository and thus is covered under the same license as Zope. It\
is being developed in conjunction with the Zope Portal Toolkit\
effort. However, the ZCatalog product is managed as its own\
module in CVS.\
\
\
Installing ZCatalog\
ZCatalog can be downloaded from the Zope download area and is\
also a module in the public CVS for Zope. Untar it while in the\
root directory of your Zope installation:\
\
$ cd Zope-2.0.0a3-src/\
$ tar xzf ../ZCatalog-x.x.tgz\
\
\
\
Windows users can use WinZip or a similar utility to accomplish\
the same thing.\
\
Also, Zope 2.0.0a3 does not have the latest version of UnIndex and\
UnTextIndex which fix a couple of bugs in the alpha 3 versions.\
The latest CVS of the SearchIndex packages must be used.\
\
Remember, you have to restart your Zope server before you will see\
ZCatalog.\
\
\
ZCatalog Objects\
A ZCatalog performs two activities: indexing information and\
performing searches.\
\
Most the work is done in the first step, which is getting objects\
into the index. This is done in two ways. First, if your objects\
are ZCatalog-aware they automatically update the index when they\
are added, edited or directly deleted. A ZCatalog-aware object is\
one that is an instance of a Z Class that informs the ZCatalog\
of changes. Directly deleted means the object was deleted from\
a Folder, not the deletion of a containing Folder.\
\
The second way that site contents get updated is by "finding"\
information "into" the ZCatalog. An operation based on Zope's\