From Chris:
I did do a little more investigation of the 'IContent' query.
Specifically, I looked at all of the objects that *don't* have the
IContent interface that are in the catalog. At a little over 100,000
objects, they account for about a third of the total objects in the
catalog and are all one of three classes:
set([<class 'karl.content.models.attachments.AttachmentsFolder'>, <class
'karl.content.models.commenting.CommentsFolder'>, <class
'karl.models.members.Members'>])
I can't imagine ever wanting to see any of those returned from a catalog
query. Maybe one thing that would give us a little better performance
across the board would be to go ahead and evict any object that doesn't
provide IContent from the catalog, add code so that we skip indexing
non-IContent objects going forward, and look for any queries that use
'interfaces=[IContent]' and get rid of that, which should make those
queries a little faster. Also, evicting a third of all of objects from
the catalog should give us a bit of a boost even in queries that don't
use 'interfaces=[IContent]', although I think most of them do.