|
Как заставить gin индекс брать триграммы не на основе дефолтного collation базы?
|
|||
---|---|---|---|
#18+
В базе данных все таблицы изначально были установлены в порядке сортировки: LC_COLLATE=C и LC_CTYPE = C. Оказалось, что из-за этого поиск игрока по нику не работает для кириллицы. Поэтому я решил изменить правила сортировки для отдельной колонки с ником: Код: sql 1. 2. 3.
Далее я хотел сделать быстрый поиск игрока по нику с помощью индексов триграмм и создал gin индекс: Код: sql 1. 2.
После этого поиск по нику значительно ускорился на латинице , и в плане запроса видно, что используется gin индекс. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Но тот же запрос не работает с кириллицей ... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Я также попытался установить collation для gin индекса, но ничего не изменилось. Скажите, как заставить gin индекс брать триграммы, не основанные на стандартной сортировке базы? Есть ли какой-нибудь способ избежать перестройки кластера в этой ситуации? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2021, 22:08 |
|
Как заставить gin индекс брать триграммы не на основе дефолтного collation базы?
|
|||
---|---|---|---|
#18+
Евгений Калинин, а если указать collation и для поля в индексе и для самой поисковой строки в запросе - так не подхватит индекс? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 10:56 |
|
Как заставить gin индекс брать триграммы не на основе дефолтного collation базы?
|
|||
---|---|---|---|
#18+
Создал новый индекс, дропнув старый: Код: sql 1. 2.
Попробовал: Код: sql 1. 2. 3.
Без изменений: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 11:45 |
|
Как заставить gin индекс брать триграммы не на основе дефолтного collation базы?
|
|||
---|---|---|---|
#18+
Так же заметил, что русский текст не разбивается на триграммы: Код: sql 1. 2.
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 12:06 |
|
Как заставить gin индекс брать триграммы не на основе дефолтного collation базы?
|
|||
---|---|---|---|
#18+
Евгений Калинин Так же заметил, что русский текст не разбивается на триграммы: Код: sql 1. 2.
Код: sql 1. 2.
В общем не вылечите вы это без пересоздания базы с нормальными LC_COLLATE/LC_CTYPE во всяком случае штатными методами. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2021, 12:59 |
|
|
start [/forum/topic.php?fid=53&msg=40059084&tid=1994104]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 367ms |
0 / 0 |