Your custom index probably isn't being recreated after the walk. Look in updatemmindex where other indices are updated and make sure yours is listed there too.
In the function 'checkbest' (invoked by 'movebest', in turn invoked by 'dispatch'), the "bestbets" table is checked and created (if it does not exist) and then the indeces on the "bestbets" table are created. After the 'checkbest' function is done and returns, the 'movebest' function continues and queries the live db and inserts the selected "bestbets" records in the "bestbets" of the new database.
1. I wonder if the new db could have possibly been used to flip databases in the past and hence could have been not clean (i.e. empty "html" and "bestbets" and etc. tables). Then the 'checkbest' function just returns without creating the "bestbets" table and indeces afresh.
2. If the new database ("$otherdb") is clean and the "bestbets" table and its metamorph indeces are created successfully and then best bets' records inserted in it successfully, why would the synonyms not work correctly?
I looked in the 'savebest' function: all it does is to delete the best bet items for the given URL and re-save them rightaway in the "bestbets" table. No other functions are being called. But then how come the synonyms and best bets work fine, if I resave the best bets manually through the admin interface?!?!
Thank you very much for your help!