Olha, tinha visto um conteúdo muito bom a respeito disso. Se não me engano era do ifood.
Infelizmente nao achei mais.
Tem muitas formas de resolver isso. A pior delas é vc tentar criar seu próprio dicionário de similaridades. Vc dificilmente conseguirá esgotar todas as variações possíveis.
A solução depende muito do seu volume de pesquisas, e quanto de overengeneering quer aplicar.
Eu começaria com uma coluna vetorial no postgres combinada com algoritmo fuzzy nos resultados retornados. Mas antes de salvar no banco normalizaria os dados (minúsculo, remover acentos, espaços duplicados, caracteres especiais...)
É um começo que funciona.