I'm enjoying the switch to a DRb-enabled Ferret, thanks to Jens and acts_as_ferret. Specifically, there is a feature in AAF whereby you can funnell all of your searches and updates from multiple processes into a central ferret_server, a DRb process that does all the business of updating and searching your indexes. I think this feature has actually been around for a few months, but this is the first chance I've had to use it.

Having a DRb ferret server is especially useful to me because, with TravelersTable.com, we have cron jobs that need to run off-line and update indexes. Before switching to ferret_server, I always ran into lock contention issues while updating a Ferret index outside of the main Rails app. We would have to kill our Rails app, make the index updates quickly (or at some time in the middle of the night when no one noticed), and then re-start the app. So far, using ferret_server, I've been able to update the index without disturbing the app, which is really very nice.

Finally, if you're going to make this switch, one thing to be aware of is a sorting bug. For the full explanation and a patch, see this post by Mike Mangino.

Leave a Reply