Бих използвал Apache Solr . Мисля, че е по-гъвкав от Sphinx. Solr поддържа търсене в пълен текст и вярвам, че има добавки за семантична поддръжка (като сирена ). Solr е сървъризираната версия на Lucene.
Solr поддържа SynonymFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#SynonymFilter
Тази публикация обсъжда някои стратегии за оптимизиране на извличането на съдържание http://www.lucidimagination.com/devzone/technical-articles/optimizing-findability-lucene-and-solr