ZCatalog can index any object in the Zope ODB. So, for external data, you'll need some kind of object that'll model that external data, i.e. define methods that return that data you want to have indexed and/or included in the Catalog.
I don't think this has to be an object for every item you need to catalog, I am pretty sure you can do with only one object for every type of item. But I haven't done this kind of thing yet.
Did anyone have done something like that successfully? To people like me, a How-To is needed seriously! Also, one more question for combining ZCatalog and SQL Database searching -- do I really need to index the data in the SQL database into the ZCatalog when they are already indexed in the SQL database? Can I somehow link the ZCatalog to a SQL search interface so that when I search a ZCatalog, it will trigger the SQL search, and at the end combine the result into one report? Or, am I making it more complicated than it should be? Kam