[Zope] How to join/add ZCatalog.searchResults?

Martijn Pieters mj@antraciet.nl
Fri, 15 Oct 1999 15:27:32 +0200


At 14:31 15/10/99 , Michael Gutmann wrote:
><...>
> >Try: title_search[:] + data_search[:]. The result object from a Catalog
> >query supports slicing, and this also works when there is only one result
> >(because then the returned set is just a python list).
> >
> >ZCatalog uses an object that avoids loading the whole result list into
> >memory if it possibly can help it. Above solution will completely destroy
> >this effort of course.
> >
> >--
> >Martijn Pieters, Web Developer
>
>Hmm, no chance, Zope complains with:
>
>Error Type: MemoryError
>Error Value:
>
>that seems to be raised by the controlling method you mentioned
>
>File /www/WWW/Zope/2.0.1/lib/python/DocumentTemplate/DT_Util.py, line 170, 
>in careful_getslice
>File /www/WWW/Zope/2.0.1/lib/python/Products/ZCatalog/Lazy.py, line 109, 
>in __getslice__
>MemoryError: (see above)
>
>and there ist only one item in each searchResult.
>Are the searchResult objects that big, that there has to be such a 
>restriction?

Whoops. That's because the __getslice__ method is being called with 
sys.maxint. I didn't consult the Python language reference on this. Right, 
try this:

   title_search[:len[title_search]] + data_search[:len[data_search]]


--
Martijn Pieters, Web Developer
| Antraciet http://www.antraciet.nl
| Tel: +31-35-7502100 Fax: +31-35-7502111
| mailto:mj@antraciet.nl http://www.antraciet.nl/~mj
| PGP: http://wwwkeys.nl.pgp.net:11371/pks/lookup?op=get&search=0xA8A32149
------------------------------------------