Usaría Apache Solr . Creo que es más flexible que Sphinx. Solr admite la búsqueda de texto completo y creo que tiene complementos para soporte semántico (como siren ). Solr es la versión servidorizada de Lucene.
Solr admite un SynonymFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#SynonymFilter
Esta publicación analiza algunas estrategias para optimizar la recuperación de contenido http://www.lucidimagination.com/devzone/technical-articles/optimizing-findability-lucene-and-solr