Busca com sinonimos

ois bem no meu sistema tenho que fazer um busca pelos produtos do banco de dados de acordo com a string fornecida pelo usuario. Estou fazendo assim:

expressao = expressao.replace(’ ‘, ‘%’);
String cmd = “SELECT * FROM produtos WHERE nome like '%”+expressao+"%’";

Assim se o usuario pesquisar “lampada quarto” o mysql ira retornar: “lampada do quarto azul”,“lampada do quarto verde”,“lampada do quarto vermelha”,“lampada do quarto” por exemplo.

Bem eu queria saber como fazer para ter uma tabela de sinonimos contendo os campos ‘palavra’ e ‘sinonimo’ e por exemplo estivessem contidas nela ‘lampada’ e ‘lp’ respectivamente, para que quando o usuario fosse pesquisar bastaria apenas “lp quarto”.
Será que alguem sabe como fazer isso?
Aguardo a a resposta de vocês, grato desde já.

Este tipo busca o ideal seria o usar o Apache Lucene combinado com Hibernate Search, as documentações neste
respectivos links:http://lucene.apache.org/java/docs/index.html e http://www.hibernate.org/subprojects/search.html.

Vocè encontra um demostração dos dois neste link:http://blog.caelum.com.br/hibernate-search-com-lucene/