@pgsql

Страница 492 из 1062
Massimo
28.09.2017
11:17:30


Sergey
28.09.2017
11:20:46
Возможно это нормально

Думаю что на database encoding выбраный в верхней строчке 1251 в collation не повлияет

Adikhanov
28.09.2017
12:43:54
Доброго времени суток! Нужна помощь с JSON, не скупитесь ссылками на доку поскольку я самостоятельно попытался найти ответ в сети, но так и не нашел. SELECT row_to_json(t1), row_to_json(t2) INTO _ t1, _t2 FROM t1 LEFT JOIN t2 ON t2.id = t1.user_id WHERE t1.company_id = 1 ORDER BY t1.id DESC LIMIT 1; Как из переменной _t1 выбрать значение колонки title?

Google
Denis
28.09.2017
12:47:09
Без плана - это гадание на кофейной гущи)
вот планы для случая, когда фамилия + имя и фамилия + имя + отчество - https://pastebin.com/Ayth6y8F

Adikhanov
28.09.2017
12:49:08
так ведь есть оператор: t1->'title'
Пробовал, выдает ошибку: ОШИБКА: оператор не существует: json <> unknown LINE 1: SELECT (t1->'type_col' <> 'blocked' AND _ca...

Artem
28.09.2017
12:49:35
<> смени оператор на OR

Vadim
28.09.2017
12:50:42
вот планы для случая, когда фамилия + имя и фамилия + имя + отчество - https://pastebin.com/Ayth6y8F
Bitmap INDEX Scan ON fullname_fuzzy_idx (COST=0.00..320.33 ROWS=577 width=0) (actual TIME=235.448..235.448 ROWS=13807 loops=1) Много читаем по индексу. А какое значение pg_trgm.similarity_threshold?

Yura
28.09.2017
12:51:06
Adikhanov
28.09.2017
12:52:06
<> смени оператор на OR
я проверяю на неравенство

Artem
28.09.2017
12:52:23
Vadim
28.09.2017
12:53:29
А если построить GIST индекс в дополнение или вместо GIN ?
Вроде GIN должен быть побыстрее по идее?

Adikhanov
28.09.2017
12:54:35
ок, тогда на !=
Не работает, та же ошибка

Yura
28.09.2017
12:54:36
Вроде GIN должен быть побыстрее по идее?
А ты проверь. Я не знаю, какой результат ты получишь. Мне любопытно.

Denis
28.09.2017
12:54:49
А если построить GIST индекс в дополнение или вместо GIN ?
я пробовал гист, там все намного хуже

Vadim
28.09.2017
12:55:03
Google
Yura
28.09.2017
12:55:47
Ну вот и проверили :-)

Yura
28.09.2017
12:57:22
Учитывая механизм работы триграмм и GIN, замедление при более длинном запросе ожидаемо.

Denis
28.09.2017
12:58:11
да, я понимаю. вот и интересовался альтернативными практиками/грязными хаками

Adikhanov
28.09.2017
12:58:41
Не работает, та же ошибка
все, решил проблему записал значение в переменную

Vadim
28.09.2017
12:59:03
А если попробовать использовать полнотескстовый поиск + триграммы?

Yura
28.09.2017
12:59:19
да, я понимаю. вот и интересовался альтернативными практиками/грязными хаками
Сделать полнотекстовый поиск с сортировкой по ревалентности?

Denis
28.09.2017
12:59:50
разве это решит проблему очепяток?

Yura
28.09.2017
12:59:56
:-) у нам примерно одинаковая с Вадимом мысль.

разве это решит проблему очепяток?
Если слов 3, то есть вероятность, что два из них более менее точные

Denis
28.09.2017
13:00:51
то есть полнотекстовый поиск - это преобразование слов в лексемы по определенным словарям. нечеткий поиск - это опечатки. а что мне даст нечеткие лексемы? или я не понимаю идею?

Vadim
28.09.2017
13:02:32
https://postgrespro.ru/docs/postgrespro/9.6/pgtrgm есть блок F.41.5. Интеграция с текстовым поиском

Denis
28.09.2017
13:10:38
да, здорово! но разве это мой случай? да, я погу согласно пункту 41.5 искать лексемы с очепятками и не париться за словоформы (окончания и т.д)... но у меня другая проблема, производительность. как добавление лексем ускорит результаты?

Evgeny
28.09.2017
13:11:56
Привет, есть у кого опыт успешной миграции с MySQL каким-нибудь тулом?

Vadim
28.09.2017
13:23:21
да, здорово! но разве это мой случай? да, я погу согласно пункту 41.5 искать лексемы с очепятками и не париться за словоформы (окончания и т.д)... но у меня другая проблема, производительность. как добавление лексем ускорит результаты?
Проблема с производительностью из за того, что слишком много триграмм удовлетворяют условиям поиска и попадают в индекс - 13807. И потом делается вот это ROWS Removed BY INDEX RECHECK: 13492. То есть сканируем то, что нам не нужно в большом количестве. Если искать сначала полнотестом целые слова (и хотя бы одно из них будет без опечаток), а потом уже искать триграммы, то это должно ускорить процесс поиска

Stas
28.09.2017
13:25:11
N-граммы надо с N=5-6 =)

Vadim
28.09.2017
13:25:30
О, Стас подключился)

Denis
28.09.2017
13:26:00
N-граммы надо с N=5-6 =)
А такие в природе водятся?) Я встречал только 2-3...

Google
Vadim
28.09.2017
13:26:55
Хорошо, понял вашу мысль. Проверю завтра
? ждем результатов. Интересно)

Stas
28.09.2017
13:27:46
А такие в природе водятся?) Я встречал только 2-3...
Вообще да, но в данный момент в pg_trgm только 3

Denis
28.09.2017
13:28:53
Вообще да, но в данный момент в pg_trgm только 3
Я правильно понял, что речь идёт про отдельные реализации под конкретных заказчиков от PostgresPro?)

Stas
28.09.2017
13:29:33
не, для постгреса я не слышал что бы кто-то это делал

я встречал standalone самодельный индексер с бОльшими N

Alexey
28.09.2017
15:26:43
Mysql умеет ngram для n от 1 до 10

Nikolay
28.09.2017
16:16:37
Подскажите - где почитать как правильно трактовать cost в explain?

Maksim
28.09.2017
16:18:49
http://www.dalibo.org/_media/understanding_explain.pdf

Stas
28.09.2017
16:35:08
Mysql умеет ngram для n от 1 до 10
Кстати, прикольно сделано. Парсер парсит в н-граммы, а дальше обычный фуллтекст

Alexey
28.09.2017
16:35:51
Да. Я тестировал на простых примерах - работает

Alexander
28.09.2017
17:03:44
Прикольно.

Кстати, в постгресе достаточно было бы сделать полнотекстовый словарь для этого.

+1 задачка для стажёров

Mikhail
28.09.2017
17:08:43
Угу, словарь бы генерил нграммы

Причём его можно объявлять с параметром n если ни че не путаю

Alexander
28.09.2017
17:09:54
Да, у словарей есть параметры. Я бы сделал параметрами n, lpadding и rpadding.

У меня, кстати, лежит модуль vgram, написанный ещё в аспирантские годы.

Нигде не публиковал пока.

Основная порочность у него – он ожидает, что частоты n-gram глобальны и лежат в строго определённой табличке.

Google
Alexander
28.09.2017
17:11:51
Умеет пока только LIKE/ILIKE, но остальному можно научить.

Sviat
28.09.2017
17:56:01
Привет, по mySQL вопросы принимаются?

если нет, дайте группу где принимаются

Просто нашел только эту

Arthur
28.09.2017
18:01:51
@mysql_ru

Sviat
28.09.2017
18:02:29
пасиб

Denis
28.09.2017
20:33:30
Умеет пока только LIKE/ILIKE, но остальному можно научить.
А можно его взять попробовать? Я бы отписался сюда по сравнению производительности поиска для разных n

Alexander
28.09.2017
20:34:15
OK, я выложу на github и отпишу сюда.

Denis
28.09.2017
20:34:43
Спасибо!

Viktor
29.09.2017
02:47:28
@darthunix а если заюзать отдельное решение для поиска типа эластик серча?

Denis
29.09.2017
02:48:56
@darthunix а если заюзать отдельное решение для поиска типа эластик серча?
Только как самый крайний случай - хотелось бы все же решить проблему средствами postgresql.

Viktor
29.09.2017
02:50:08
Данных много?

Denis
29.09.2017
03:22:16
Около 400к записей (ФИО). Сейчас пробую вариант составить список уникальных лексем из ФИО, и в каждой записи с ФИО хранить ссылки на составляющие его лексемы. А по лексемам делать нечеткий поиск триграммами

Yury
29.09.2017
05:08:50
@darthunix а если заюзать отдельное решение для поиска типа эластик серча?
не уверен что его стоит вообще юзать... для полнотекста есть решения лучше (это если не брать в расчёт ПГ)

ES требует несколько нод для нормальной работы, кучу оперативки и ещё куча подводных камней с этими их индексами

Viktor
29.09.2017
05:09:52
не спорю, можно получше найти, но 400к записей имхо мало, я думал там больше

это ~1.2кк строк - можно все в оперативу засунуть и не кашлять

Denis
29.09.2017
05:11:23
не спорю, можно получше найти, но 400к записей имхо мало, я думал там больше
Именно поэтому я и хочу решить средствами pg. Ну и был удивлён низкой скоростью при решении влоб

Yury
29.09.2017
05:17:53
к слову в постгресе нету 2Н грамм... те что актуальны для японского языка.

т.е. из коробки поиск в постгресе не применим к японскому :(

Google
Denis
29.09.2017
05:19:09
Ну поэтому японцы и сделали себе биграммное расширение

Yury
29.09.2017
05:19:21
но все они out of tree

даже в contrib не пробили

Denis
29.09.2017
05:21:18
Много хороших расширений ставятся отдельно, это не страшно

Viktor
29.09.2017
05:23:57
@darthunix а если попытаться переложить поиск с базы на приложение? я думаю куча есть либ для нечеткого поиска

Старый
29.09.2017
05:24:38
интересно георапределённый постгресс делал кто?

Denis
29.09.2017
05:26:15
@darthunix а если попытаться переложить поиск с базы на приложение? я думаю куча есть либ для нечеткого поиска
нет желания тащить эти 400к в приложение и поддерживать в согласованном состоянии с бд. я лучше добью оптимизацию сейчас по нечеткому поиску в pg, чем подпишусь на эти увлекательные приключения

Старый
29.09.2017
05:28:40
аналог rack3 у cassandra для postgre никто ещё не придумал?

Denis
29.09.2017
05:29:20
интересно георапределённый постгресс делал кто?
а при потере связи какое ожидаемое поведение?

Старый
29.09.2017
05:30:05
а при потере связи какое ожидаемое поведение?
работать с теми что в связи для приложения при возобновлении сравнить дарнные и самые новые взять как нужное

а при потере связи какое ожидаемое поведение?
есть 3 дц, надо чтобы при потере 2 из них всё ещё работало

а приложение даже не узнало, что те 2 дц потеряны

при возобновлении связи, с хоста где более свежие записи 2 других или 1 берёт данные себе обновлённые

Denis
29.09.2017
05:32:04
я помню гугл решал такие вопросы атомными часами в каждом дц и уникальным ключом был временной тик

Страница 492 из 1062