Como indexar uma tabela de postgres pelo nome, quando o nome pode estar em qualquer idioma?

Eu tenho uma grande tabela postgres de locais (lojas, pontos de referência, etc.) que o usuário pode pesquisar de várias maneiras. Quando o usuário deseja fazer uma pesquisa pelo nome de um lugar, o sistema atualmente faz (supondo que a pesquisa esteja no café):

lower(location_name) LIKE '%cafe%'

como parte da consulta. Isso é extremamente ineficiente. De forma proibitiva. É essencial que eu faça isso mais rápido. Eu tentei indexar a tabela em

gin(to_tsvector('simple', location_name))

e pesquisando com

(to_tsvector('simple',location_name) @@ to_tsquery('simple','cafe'))

que funciona lindamente e reduz o tempo de busca em algumas ordens de grandeza.

No entanto, os nomes dos locais podem estar em qualquer idioma, incluindo idiomas como o chinês, que não são delimitados por espaços em branco. Esse novo sistema não consegue encontrar nenhum local chinês, a menos que eu procure pelo nome exato, enquanto o sistema antigo pode encontrar correspondências para nomes parciais.

Então, minha pergunta é: posso fazer isso funcionar para todos os idiomas de uma vez ou estou no caminho errado?

questionAnswers(3)

yourAnswerToTheQuestion