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

Martijn Pieters mj@antraciet.nl
Fri, 15 Oct 1999 14:01:54 +0200


At 11:35 15/10/99 , Michael Gutmann wrote:
>Problem: I need to combine a search in two fields (title, data) with or.
>(standard is and, and since now there is no chance to change this, afaik?)
>
>A solution could be, to make two separate searches and join the
>searchResults, something like this:
>
><dtml-let title_search="Catalog.searchResults({'title':mysearchfield})"
>           data_search="Catalog.searchResults({'data':mysearchfield})"
>           complete_search="title_search + data_search">
>
>and then iterate over the concatenated list:
>
><dtml-in complete_search size=20 start=query_start>
>
>Well, I'd love to try this, but "title_search + data_search" doesn't
>work.
>
>Error Type: TypeError
>Error Value: __add__ nor __radd__ defined for these operands
>
>Any idea how to concatenate those two searchResults?

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
| 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
------------------------------------------