Как индексировать таблицу postgres по имени, если имя может быть на любом языке?

У меня есть большая таблица местоположений (магазины, достопримечательности и т. Д.), Которые пользователь может искать различными способами. Когда пользователь хочет выполнить поиск по названию места, система в настоящее время делает это (при условии, что поиск выполняется в кафе):

lower(location_name) LIKE '%cafe%'

как часть запроса. Это крайне неэффективно. Запредельно так. Важно, чтобы я сделал это быстрее. Я попытался проиндексировать таблицу на

gin(to_tsvector('simple', location_name))

и поиск с

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

который прекрасно работает и сокращает время поиска на пару порядков.

Однако названия местоположений могут быть на любом языке, включая такие языки, как китайский, которые не разделены пробелами. Эта новая система не может найти китайские локации, если я не ищу точное имя, тогда как старая система может найти совпадения с частичными именами просто отлично.

Итак, мой вопрос: могу ли я заставить это работать для всех языков одновременно, или я не на том пути?

Ответы на вопрос(3)

Ваш ответ на вопрос