I found a new favorite search engine for travel - http://www.kayak.co.uk/ - its yet another flight / car / hotel search engine - but its interface is clean and fast - very good UX.

One of the things I like about it is its faceted search - ie. On the left pannel there is a slider where  I can specify a range of take off times and a range of landing times. I assume that these changes make a call to faceted search engine like Lucene - but there is no reason they couldnt just be a dynamically built sql query into a mysql database.

In my minds systems like Lucene have the following properties:

  • superior fuzzy text matching capabilities including custom ranking algos, stemming
  • slow to index (slow to update data)
  • good support for clustering (federated search)

Mysql has the following properties

  • nice well know SQL interface
  • suite of well tested and known tools to support replication,  turning etc
  • fast to update index (for rapidly changing data - like product offers)
  • could be used in a clustered / federated mod. ie call 10 instances of mysql - each with their own portion of the data - then merge data and re-rank on the in the fedorator component
  • support for plugin-able backend query engines (which could be a webservice call to Lucene)