¿Cómo indexar una tabla de postgres por nombre, cuando el nombre puede estar en cualquier idioma?

Tengo una gran tabla de ubicaciones de postgres (tiendas, puntos de referencia, etc.) que el usuario puede buscar de varias maneras. Cuando el usuario quiere hacer una búsqueda por el nombre de un lugar, el sistema lo hace actualmente (asumiendo que la búsqueda está en la cafetería):

lower(location_name) LIKE '%cafe%'

como parte de la consulta. Esto es enormemente ineficiente. Así lo prohibitivamente. Es esencial que haga esto más rápido. He intentado indexar la tabla en

gin(to_tsvector('simple', location_name))

y buscando con

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

que funciona a la perfección, y reduce el tiempo de búsqueda en un par de órdenes de magnitud.

Sin embargo, los nombres de ubicación pueden estar en cualquier idioma, incluidos idiomas como el chino, que no están delimitados por espacios en blanco. Este nuevo sistema no puede encontrar ninguna ubicación en China, a menos que busque el nombre exacto, mientras que el sistema anterior podría encontrar coincidencias con nombres parciales muy bien.

Entonces, mi pregunta es: ¿Puedo hacer que esto funcione para todos los idiomas a la vez, o estoy en el camino equivocado?

Respuestas a la pregunta(3)

Su respuesta a la pregunta