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

Камрадам - доброго! Что то заклинило... https://postgrespro.ru/docs/postgresql/15/pgtrgm SELECT * FROM test_trgm WHERE t

~* '(foo|bar)';

Какой синтаксис будет у операнда AND ? 🤔

9 ответов

20 просмотров

Советую использовать несколько операторов и AND . То есть придумать — можно, что-нибудь вроде SELECT 'ABCD' ~* '(?=.*b).*a'; но... Шансов на оптимизацыю этого — меньшэ, чем с несколькими операторами.

Rinat-Karimov Автор вопроса
Ilya Anfimov
Советую использовать несколько операторов и AND . ...

при перестановке слов оно перестанет работать) Задача - найти строку, которая содержит все слова - типа Ночь, улица, фонарь, аптека ... хотелось бы обойтись без доп колонки для хранения триграмм и только индекс... Бд - справочная.

Rinat Karimov
при перестановке слов оно перестанет работать) Зад...

Что значит "перестанет"? Вы пробовали совет @tzirechnoy ? Вот ещё вариант: WHERE t ~* 'foo.*bar|bar.*foo'

Rinat-Karimov Автор вопроса
Yaroslav Schekin
Что значит "перестанет"? Вы пробовали совет @tzire...

Да - пробовал. .* означает любое кол во символов. и оканчивается на - .*a учитывая, что слов может быть до 5-ти, последний вариант разрастается до неприемлемого. Есть решение в виде to_tsvector @@ to_tsquery('ноч & улица & фонарь ') + immutable функцию в индекс... ищу решение попроще... нет, так нет)

Rinat Karimov
Да - пробовал. .* означает любое кол во символов. ...

> Да - пробовал. И что? В смысле — в чём проблема-то, конкретно? Можете показать пример, в котором что-то не так? > учитывая, что слов может быть до 5-ти, последний вариант разрастается до неприемлемого. Прямо уж вот до неприемлемого (5! = 120, всего-то). ;) Но разрастается, это да (и работает он только для непересекающихся подстрок).

Rinat-Karimov Автор вопроса
Ilya Anfimov
Нет. Можэте попробовать.

Сорри! да - так вроде работает: ~* '(?=.*ярослав)(?=.*центр)(?=.*фбуз)' Спасибо! - пошел изучать регуляки ...

Rinat Karimov
Сорри! да - так вроде работает: ~* '(?=.*ярослав)(...

Но я почти уверен, что оно работает не быстрее, чем field ~* 'ярослав' AND field ~* 'центр' AND field ~* 'фбуз'

Rinat-Karimov Автор вопроса
Ilya Anfimov
Но я почти уверен, что оно работает не быстрее, че...

Возможно - перебираю все варианты) Пока вижу что индекс с USING gin ((to_tsvector('russian' в 2 раза меньше чем USING gin ((field ) gin_trgm_ops) ... Еще раз спасибо за наводку!

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

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

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
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта