Re: makeAdvancedQuery vs. ZCatalog/CatalogTool.searchResults()

Michael Hierweck <[email protected]>
Newsgroups gmane.comp.web.zope.german
Message-ID <[email protected]>
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
[email protected]
https://mail.dzug.org/mailman/listinfo/zope
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.