Size: a a a

pgsql – PostgreSQL

2021 June 10

ch

central hardware in pgsql – PostgreSQL
источник

EM

Eshu Marabo in pgsql – PostgreSQL
Про полнотекстовой поиск, вопросы:
1. Адекватно ли он работает для русского языка, а если нет, то как тюнить?
2. Для векторизации текстов используется единый словарь для всей базы или для каждой ячейки text векторизация строится отдельно?
3. Пригодны ли результаты векторизации для дальнейшего использования в машинном обучении?
источник

NN

Nik Nik in pgsql – PostgreSQL
Всем добрый день. Посоветуйте, пожалуйста, какой-либо эффективный тул, репозитарий для контроля изменений и версий базы данных на Постгресе. Особенность в том, что приложение использует Hibernate и все изменения объектов в базе делаются им.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> 1. Адекватно ли он работает для русского языка, а если нет, то как тюнить?

Как мне кажется, не очень. "Тюнить" можно созданием адекватного словаря русского языка, например (и, прежде чем Вы спросите, нормальных словарей вообще нет в свободном доступе, насколько мне известно).
Кроме того, это зависит от того, какой именно поиск / какая обработка Вам нужны (т.к. есть возможность создавать свои "конвейеры" для векторизации текстов).

> 2. Для векторизации текстов используется единый словарь для всей базы

Есть конфигурация для всей базы по умолчанию. А дальше всё зависит только от Вашей фантазии (и упорства в реализации) — можете векторизовать хоть куски полей в конкретных записях конкретных таблиц. ;) Но обычно используют единую конфигурацию для всей базы плюс, возможно, отдельные для некоторых полей некоторых таблиц.

> или для каждой ячейки text векторизация строится отдельно?

Вы реляционную СУБД с Excel не путаете, случайно? ;)

> 3. Пригодны ли результаты векторизации

Всё что угодно пригодно "для дальнейшего использования в машинном обучении", IMNSHO. Качество результата — как всегда. ;)
источник

EM

Eshu Marabo in pgsql – PostgreSQL
Спасибо за развернутый ответ!
источник

МН

Михаил Н. in pgsql – PostgreSQL
Добрый день!
Может кто сталкивался с подобным.
Есть Astra Linux (1.6 Smolensk)  + Postgres 9.6 из его же дистрибутива.  Дополнительно выставили параметры:
/etc/parsec/mswitch.conf для параметра zero_if_notfound = yes
ac_enable_dblink_mac = tru

Проблема с работой dblink.

create server loopback_dblink foreign data wrapper dblink_fdw options (hostaddr '127.0.0.1', dbname 'db_name');
create user mapping for db_user server loopback_dblink options(user 'db_user', password 'pass');
grant usage on foreign server loopback_dblink TO db_user;
Всё отлично создаётся, но
select public.dblink_connect('test', 'loopback_dblink');

выдаёт ошибку:
[08001] ERROR: could not establish connection
Подробности: invalid connection option "maclabel"

Пробовали ставить postgresql-contrib из репы debian, ситуация не меняется.

может кто с подобным сталкивался? Куда рыть? В данном решение мандатное разделение прав в БД не нужно.

На Debian + ванильный Postgres 9.6 / 12 всё работает без проблем.

Заранее благодарен за ответ по существу.

P.S. по заказчика и быстро не может в ТП обратиться, а решить нужно как обычно "вчера".
источник

b

batyrmastyr in pgsql – PostgreSQL
@EshuMarabo 1. постгресПро гитхабе выкладывали адаптированные словари из OpenOffice. Они выделяют корни слов, а не отрезают "что-то похоже на окончание".

2. "Для каждой ячейки" можно, но сложно: нужно как-то понимать, по каким правилам строите поисковый запрос и вектор. Самый лобовой вариант - хранить в столбце рядом.
create table test (
   config text,
   message text
)
select *, to_tsvector(config::regconfig, message), to_tsquery(config::regconfig, 'Елки & зелёные') from test
config  message        to_tsvector             to_tsquery
english  The Fat Rats   'fat':2 'rat':3         'ёлки' & 'зелёные'
russian  The Fat Rats   'fat':2 'rat':3          'ёлки' & 'зелён'
english  Ёлки зелёные   'зелёные':2 'ёлки':1    'ёлки' & 'зелёные'
russian  Ёлки зелёные   'зелён':2 'ёлки':1      'ёлки' & 'зелён'
И индекс по такому запросу едва ли будет использоваться, так что либо делаем универсальный словарь на все нужные нам языки, либо делаем по запросу на каждый язык.
источник

EM

Eshu Marabo in pgsql – PostgreSQL
Спасибо!!
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> адаптированные словари из OpenOffice.

И словари эти (а это те, которые AOT) — дрянь, Вы меня извините. Вы сами-то с ними разбирались?

> а не отрезают "что-то похоже на окончание".

А тут о чём речь, кстати? Т.е. чем Вы сравниваете?

> 2. "Для каждой ячейки" можно, но сложно

Ну да, но тоже я имел в виду самый простой вариант, как Вы и написали:

> Самый лобовой вариант - хранить в столбце рядом.
источник

EM

Eshu Marabo in pgsql – PostgreSQL
Про "каждой ячейке" мне какраз не нужно, я боялся что оно так реализовано))
источник

b

batyrmastyr in pgsql – PostgreSQL
> А тут о чём речь, кстати? Т.е. чем Вы сравниваете?
Со стандартными Snowball. Едва ли что-то может быть хуже них.
источник

EM

Eshu Marabo in pgsql – PostgreSQL
https://nlpub.ru/Russian_Distributional_Thesaurus

А с этой штукой никто не работал?
nlpub.ru
Russian Distributional Thesaurus — NLPub
Russian Distributional Thesaurus (сокр. RDT) — проект создания открытого дистрибутивного тезауруса русского языка. На данный момент ресурс содержит несколько компонент: вектора слов (word embeddings), граф подобия слов (дистрибутивный тезаурус), множество гиперонимов и инвентарь смыслов слов. Все ресурсы были построены  автоматически на основании корпуса текстов книг на русском языке (12.9 млрд словоупотреблений). В следующих версиях ресурса планируется добавление  и векторов смыслов слов для русского языка, которые были получены на основании того же корпуса текстов. Проект разрабатывается усилиями представителей УрФУ, МГУ им. Ломоносова, Университета Гамбурга. В прошлом в проект внесли свой вклад исследователи из Южно-Уральского государственного университета, Дармштадского технического университета, Волверхемтонского университета и Университета Тренто.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Ну так это просто стеммер, который пытается работать вообще без словаря (см. https://snowballstem.org/algorithms/russian/stemmer.html ), чего от него вообще можно хотеть? ;)
<sarcasm>И, тем не менее, на некоторых словах даже он работает лучше, чем это "чудо" из OpenOffice.</sarcasm>
источник

b

batyrmastyr in pgsql – PostgreSQL
0_о а вы эти слова ещё помните? Хочется глянуть, насколько адекватно они обрабатываются лемматизатором сфинкса.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
А зачем что-то помнить? Вот скачайте и посмотрите postgrespro/hunspell_dicts/master/hunspell_ru_ru_aot/ru_ru_aot.dict
Вот "случайный" пример оттуда:
агрегатор
агрегатора
агрегаторам
агрегаторами
агрегаторах
агрегаторе
агрегаторов
агрегатором
агрегатору
агрегаторы

Stemming my eye. ;(
источник

b

batyrmastyr in pgsql – PostgreSQL
Кстати, а что скажете про https://github.com/postgrespro/rusmorph?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Я как-то смотрел, но не помню. Кстати, это тут уже обсуждалось — поищите в истории чата, если любопытно.
источник

b

batyrmastyr in pgsql – PostgreSQL
Спасибо, с поиском я что-то я тупанул.
источник

IA

Ilya Anfimov in pgsql – PostgreSQL
А что в этом примере не так?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
То, что основа слова агрегаторами — это агрегаторами, а вот агрегаторах — это совсем другое слово (по мнению составителей словаря).
источник