[Grok-dev] Re: Sorting catalog results

Martijn Faassen faassen at startifact.com
Wed Jun 27 08:59:53 EDT 2007


Luciano Ramalho wrote:
> Trying to figure out how to sort results from a catalog search, I just
> read (most of) a very long thread on Zope3-dev earlier this year and
> got worried about how it ended.
> 
> Does it mean that I have to educate my users ("You don't really want
> sorted results, on account of scalability problems"), or is there some
> recommended way to sort the results of a catalog search in Zope3 or
> Grok?

No, please don't educate your users. The debate went back and forth. I 
think we all agree that the sorting story could be scaled better, but 
Jim kept pointing out there is no fundamental way to speed it up, and I 
kept pointing out that besides the fundamentals there may be many things 
we can do to make this scale better nonetheless. We got stuck in a loop 
there. :)

There are two strategies here. One is the short-term 
getting-things-done-strategy. For that, I'd recommend using Python's (or 
zc.table's, if you're using that for tabular display) sorting 
functionality. That sorts the whole result set. It may scale well enough 
for your application.

Now on to the other strategy. Ignas has done some work on the SchoolTool 
project concerning scalable sorting and batching that may be relevant 
here and reported to me that he managed to speed things quite a lot. I 
don't know the details, but here are pointers to the code he gave me a 
while ago:

http://source.schooltool.org/trac/browser/trunk/schooltool/src/schooltool/skin/table.py
- FilterWidget and TableFormatter classes

http://source.schooltool.org/trac/browser/trunk/schooltool/src/schooltool/skin/table.py
- TableContainerView class

http://source.schooltool.org/trac/browser/trunk/schooltool/src/schooltool/skin/templates/table_container.pt

But please talk to Ignas (on irc, or ignas.mikalajunas at gmail.com) for 
more information.

If this code is interesting, we have a problem, as Schooltool code is 
GPL. Generalizing it and putting it in Zope's svn is thus blocked. We 
could go two routes:

* contact Mark Shuttleworth as the Zope Foundation and ask whether we 
can get this code as ZPL in the Zope repository. I can start this 
process if needed - let me know.

* talk to Ignas to get the general idea, study the code, and reimplement 
the concepts as a Zope 3 package without copying the code.

Regards,

Martijn



More information about the Grok-dev mailing list