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?