Eu usaria o Apache Solr . Acho que é mais flexível que o Sphinx. O Solr suporta pesquisa de texto completo e acredito que tenha complementos para suporte semântico (como sirene ). Solr é a versão serverizada do Lucene.
O Solr suporta um SynonymFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#SynonymFilter
Esta postagem discute algumas estratégias para otimizar a recuperação de conteúdo http://www.lucidimagination.com/devzone/technical-articles/optimizing-findability-lucene-and-solr