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 ответов

18 просмотров

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...

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта