Melhor maneira de armazenar e recuperar sinônimos no banco de dados mysql

Estou fazendo uma lista de sinônimos que vou armazená-lo no banco de dados e recuperá-lo antes de fazer a pesquisa de texto completo.

Quando os usuários digitam como: word1

Preciso procurar essa palavra na minha tabela de sinônimos. Portanto, se a palavra for encontrada, eu selecionaria todos os sinônimos dessa palavra e a usaria na pesquisa de texto completo na próxima consulta em que eu a controla como

CORRESPONDÊNCIA (nome da coluna) CONTRA ((palavra1a palavra1b palavra1c) NO MODO BOOLEANO)

Então, como guardo os sinônimos em uma tabela? Encontrei 2 opções:

usando colunas de chave e palavra como

val  keyword
-------------
1    word1a
1    word1b
1    word1c
2    word2a
2    word2b
3    word3a
etc.

Então, eu posso encontrar a correspondência exata da palavra digitada em uma consulta e encontrar seu ID. Na próxima seleção, recebo todas as palavras com esse ID e de alguma forma as concordo usando um loop de conjunto de registros no idioma do servidor. Posso então construir a pesquisa real na tabela principal que preciso procurar pelas palavras.

usando apenas colunas de palavras como

word1a|word1b|word1c
word2a|word2b|word2c
word3a

Agora, eu seleciono minha palavra, se ela estiver dentro de qualquer registro, se for, extrair todo o registro e explodi-lo em | e tenho minhas palavras novamente que posso usar.

Essa segunda abordagem parece mais fácil de manter para quem faria esse banco de dados de sinônimos, mas vejo 2 problemas:

a) Como encontro no mysql se uma palavra está dentro da string? Eu não posso gostar de 'word1a' porque sinônimas podem ser muito parecidas de uma maneira que word1a poderia ser strowberry e strowberries poderiam ser pássaros e a palavra 2a poderia ser berry. Obviamente, eu preciso de uma correspondência exata, então como uma instrução LIKE pode corresponder exatamente dentro de uma string?

b) Eu vejo um problema de velocidade, usando LIKE eu acho que pegaria mais mysql do que "=" usando a primeira abordagem em que eu exatamente correspondo uma palavra. Por outro lado, na primeira opção, preciso de duas instruções, uma para obter o ID da palavra e a segunda para obter todas as palavras com esse ID.

Como você resolveria esse problema, mais um dilema que abordagem adotar? Existe uma terceira maneira que eu acho que não é fácil para o administrador adicionar / editar sinônimos e ao mesmo tempo rápido e ideal? Ok, eu sei que não há melhor maneira geralmente ;-)

ATUALIZAR: A solução para usar duas tabelas, uma para a palavra mestra e a segunda para as palavras sinônimas, não funcionará no meu caso. Porque eu não tenho uma palavra MESTRE que o usuário digita no campo de pesquisa. Ele pode digitar qualquer um dos sinônimos no campo, então ainda estou pensando em como definir essas tabelas, pois não tenho palavras mestras que teriam IDs em uma tabela e sinônimo de ID do mestre na segunda tabela. Não há palavra mestre.

questionAnswers(3)

yourAnswerToTheQuestion