J'utiliserais Apache Solr . Je pense que c'est plus flexible que Sphinx. Solr prend en charge la recherche en texte intégral et je pense qu'il a des modules complémentaires pour le support sémantique (comme siren ). Solr est la version serveur de Lucene.
Solr prend en charge un SynonymFilter :http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#SynonymFilter
Cet article traite de certaines stratégies pour optimiser la récupération de contenu http ://www.lucidimagination.com/devzone/technical-articles/optimizing-findability-lucene-and-solr