Hallo,
ich habe noch einmal an dem Versuch gefeilt. Da makeAdvancedQuery die
Sortierung nicht behandelt, mache ich das selbst.
------------------------------------------------------------------------
import Products.AdvancedQuery
def _searchResults(self, REQUEST=None, used=None, _merge=1, **kw):
if kw.has_key('sort_on'):
sort_on = kw['sort_on']
if kw.has_key('sort_order') and (kw['sort_order'] == 'descending' or
kw['sort_order'] == 'reverse'):
sort_order = 'desc'
else:
sort_order = 'asc'
sorting = ((sort_on,sort_order),)
else:
sorting = ()
return self.evalAdvancedQuery(self.makeAdvancedQuery(kw), sorting)
from Products.ZCatalog.ZCatalog import ZCatalog
ZCatalog.searchResults = _searchResults
ZCatalog.__call__ = _searchResults
del ZCatalog
------------------------------------------------------------------------
Wenn ich diesen Patch anwende, wird meine Plone Site leider so extrem
langsam, dass man meint, sie würde hängen (kein Output nach über einer
Stunde).
Die extreme Rechenzeit wird aber dem Anschein *zwischen* einzelnen
Suchaufrufen verbraucht.
Ich habe mal versuchsweise die Ergebnismengen gekürzt:
return self.evalAdvancedQuery(self.makeAdvancedQuery(kw), sorting)[:25]
Dann ist die Website schnell, aber "kurz"...
Ich vermute, dass Teile von Plone mit der LazyMap von AdvancedQuery
"ungeschickt" umgehen. Aber kann es sein, dass der ungepatchte ZCatalog
dann so erheblich effizienter ist? (Verständnisproblem)
Viele Grüße
Michael
_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope