172 похожих чатов

Всем привет! есть таблица с текстовым полем: varchar(200) и другими полями

- 2 млн записей

Есть файл с 5к
записей с возможными ошибками.


Необходимо произвести полнотекстовый поиск по данным из файла.


Включил триграммы.
Выполняю подоьные поиски:

select * from mytable where word_similarity(mykey, mytext) > 0.3 order by word_similarity(mykey, mytext) desc limit 1;


Выполняется такой запрос примерно 30 сек

посоветуйте как можно пересобрать индекс /ускорить?


поможет ли если рапилить таблицу на 2 по 1м

и выполнять поиск параллельно (в ондой и той же БД)?

16 ответов

21 просмотр

1) https://t.me/pgsql/303899 2)Распилить — можэт и могло бы помочь в некоторых (достаточно маргинальных) случаях, только всё равно чтобы понять что у нас тут за случай — надо разобраться с тем, что происходит. И нет, 30 сек поиска на таких данных — это, в среднем, ненормально. Дажэ без индэкса.

Raimbek-Rakhimbekov Автор вопроса
Ilya Anfimov
1) https://t.me/pgsql/303899 2)Распилить — можэт ...

PostgreSQL 13.2 (Ubuntu 13.2-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit Данные - слова русского языка с возможными цифрами и дефисами

> Необходимо произвести полнотекстовый поиск по данным из файла. word_similarity — это не FTS. Что Вам всё-таки нужно? > Включил триграммы. Что это вообще значит? Расширение создали, что ли? > create index idx_mt_mk on mytable using gin (mykey); И он, естественно, не используется. Прочитайте https://www.postgresql.org/docs/current/pgtrgm.html

Raimbek-Rakhimbekov Автор вопроса
Yaroslav Schekin
> Необходимо произвести полнотекстовый поиск по да...

Яраслов, Спасибо за ответ Да, включил расширение без этого функции similarity, word_similarity не работают необходимо искать наиболее похожую строку без учета порядка слов, насколько понимаю это есть FTS поиграл с операторами %, <%, %> и функциями word_siimilarity, similarity Во всех случаях explain показывает: Parallel Seq Scan что может быть не так? PS: сейчас индекс единственный + таблица содержит только одну колонку типа varchar(200)

Raimbek Rakhimbekov
Яраслов, Спасибо за ответ Да, включил расширение ...

Ярослав сказал вам ведь: индэкс для функцыи word_simliarity модуля pg_trgm создаётся не так, а как -- описано в документацыи, на которую он дал ссылку.

Raimbek Rakhimbekov
Яраслов, Спасибо за ответ Да, включил расширение ...

> необходимо искать наиболее похожую строку без учета порядка слов, насколько понимаю это есть FTS Нет, FTS — это https://www.postgresql.org/docs/current/textsearch-intro.html Вам решать, подходит это или нет. > что может быть не так? https://t.me/pgsql/320014

Raimbek-Rakhimbekov Автор вопроса
Ilya Anfimov
Ярослав сказал вам ведь: индэкс для функцыи word_s...

создал индекс так: create index idx_mt_mk on mytable using gin (mykey); это не по доке?

Raimbek Rakhimbekov
создал индекс так: create index idx_mt_mk on myt...

Процитируйте-ка, где Вы в этой доке такое нашли?! И ведь Вам же уже два человека написали, что нет.

Raimbek-Rakhimbekov Автор вопроса
Yaroslav Schekin
Процитируйте-ка, где Вы в этой доке такое нашли?! ...

Спасибо видимо о gin_trgm_ops речь пересоздам

Raimbek Rakhimbekov
Спасибо видимо о gin_trgm_ops речь пересоздам

На самом деле вы не угадали -- не о нём! Хотя это лучшэ, чем ничего.

Raimbek-Rakhimbekov Автор вопроса
Ilya Anfimov
На самом деле вы не угадали -- не о нём! Хотя это...

Можете таки рассказать 1) сменил тип поля на text 2) пересоздал индекс согласно пункту F.31.4. Index Support explain таки не юзает его :|

Ilya Anfimov
На самом деле вы не угадали -- не о нём! Хотя это...

Почему "не о нём"? Только такие индексы могут хоть как-то использоваться с этим extension. Ну и операторы similarity они поддерживают, в принципе.

Raimbek Rakhimbekov
Можете таки рассказать 1) сменил тип поля на tex...

Ну, в документацыи написано, что конкретно для вашэго случая имеет смысл как раз GIST индэкс. Впрочем, подозреваю, что планировщик не использует индэкс -- потому, что-то ещё там сломано. Дажэ gin должэн помочь.

Raimbek-Rakhimbekov Автор вопроса
Ilya Anfimov
Ну, в документацыи написано, что конкретно для ваш...

попробую gist: Ярослав, explain (analyze, buffers) SELECT mykey, similarity(mykey, 'эпоксидная бежевая') AS sml FROM mytable WHERE mytable.mykey % 'эпоксидная бежевая' ORDER BY sml DESC, mykey

Raimbek Rakhimbekov
попробую gist: Ярослав, explain (analyze, bu...

И это абсолютно другой запрос, чем тот, который вы выполняли вначале...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта