powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / FTS для внешних данных
10 сообщений из 10, страница 1 из 1
FTS для внешних данных
    #39251178
HiHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
На одной машине имеется файловый сервер , на другой - БД postgresql
Есть ли возможность в postgre создавать полнотекстовый индекс для файлов и при этом их физически не хранить, а хранить только ссылку на файл (например путь в файловой системе)?

спасибо!
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251201
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiHunterДобрый день!
На одной машине имеется файловый сервер , на другой - БД postgresql
Есть ли возможность в postgre создавать полнотекстовый индекс для файлов и при этом их физически не хранить, а хранить только ссылку на файл (например путь в файловой системе)?

спасибо!

Можно, если знаете как добраться до файлов из постгреса, например, в pl/perl, pl/python.
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251209
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg BartunovHiHunterДобрый день!
На одной машине имеется файловый сервер , на другой - БД postgresql
Есть ли возможность в postgre создавать полнотекстовый индекс для файлов и при этом их физически не хранить, а хранить только ссылку на файл (например путь в файловой системе)?

спасибо!

Можно, если знаете как добраться до файлов из постгреса, например, в pl/perl, pl/python.

Все равно в базе придется хранить tsvector который по размеру будет не то чтобы сильно меньше исходного текста в файле.
А вот так чтобы FTS GIN индекс построенный по данным вне базы + ссылка на файл в таблице - по моему это невозможно (так чтобы tsvector не хранился в базе вообще).


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251213
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiHunter,

как я неправильно понял -- предлагается что то из :
Код: sql
1.
2.
3.
create or replace function get_body_by_path(path text) returns text as .... /*plperl or ~~ */ ... IMMUTABLE ....

create index on pathes ........((get_body_by_path(path)))


+ reindex or update всякий раз, когда меняете тело файла.


НО с апдейтом при неизменном пути будут проблемы. -- оно ж иммутабно (смайл).

А перегружать IMMUTABLE ф--ю в конкурентной среде -- чтобы отинвалидить кеш значений в пж бабушка не велит (остальные валятся с криками -- ну вот не поделено оно [кеш имутабных] по txid ни разу) -- т.ч. проблем будет по самое нехочу. надо изначально закладываться, что изменение тела файла == изменению пути. тогда проще [не надо перегружать ф--ю]. т.е. куча хенджоба, и, по итогу, ни вправо ни влево ни шагу.
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251218
HiHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg BartunovМожно, если знаете как добраться до файлов из постгреса, например, в pl/perl, pl/python.
Из постгреса нет такой возможности. Постгес не имеет доступ к файловому серверу. Файл для индексации спускается в БД внешним приложением.


Maxim BogukВсе равно в базе придется хранить tsvector который по размеру будет не то чтобы сильно меньше исходного текста в файле.
А вот так чтобы FTS GIN индекс построенный по данным вне базы + ссылка на файл в таблице - по моему это невозможно (так чтобы tsvector не хранился в базе вообще).


Вот интересно именно второе. т.к. для поиска интересен в основном только факт наличия словоформы. Ранжирование полезно, но можно и без него. А конкретное положение в тексте вообще не нужно.
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251226
HiHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwqHiHunter,

как я неправильно понял -- предлагается что то из :
Код: sql
1.
2.
3.
create or replace function get_body_by_path(path text) returns text as .... /*plperl or ~~ */ ... IMMUTABLE ....

create index on pathes ........((get_body_by_path(path)))


+ reindex or update всякий раз, когда меняете тело файла.


НО с апдейтом при неизменном пути будут проблемы. -- оно ж иммутабно (смайл).

А перегружать IMMUTABLE ф--ю в конкурентной среде -- чтобы отинвалидить кеш значений в пж бабушка не велит (остальные валятся с криками -- ну вот не поделено оно [кеш имутабных] по txid ни разу) -- т.ч. проблем будет по самое нехочу. надо изначально закладываться, что изменение тела файла == изменению пути. тогда проще [не надо перегружать ф--ю]. т.е. куча хенджоба, и, по итогу, ни вправо ни влево ни шагу.

Не совсем.
1. файл неизменен
2. Вообще говоря файла нет(индексируется некая промежуточная форма представления файла, которая вычисляется во внешнем по отношении к БД приложении). Промежуточная форма тоже неизменна.
3. В БД есть таблица со ссылкам на файлы. При обработке файла это внешнее приложение создает в таблице запись со ссылкой на файл. Дополнительно оно может передать и эту промежуточную форму для индексирования.
4. Требуется задействовать полнотекстовый поиск для записи нужных файлов
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251232
HiHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первое что приходит в голову, это создать текстовый столбец в таблице для индексирования
Сделать индекс нечувствительным к update
Писать туда файл.
в следующей транзакции делать update этого поля и присваивать NULL
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39251253
HiHunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так можно сделать?
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39252271
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HiHunterOleg BartunovМожно, если знаете как добраться до файлов из постгреса, например, в pl/perl, pl/python.
Из постгреса нет такой возможности. Постгес не имеет доступ к файловому серверу. Файл для индексации спускается в БД внешним приложением.


pl/perlU может все.
...
Рейтинг: 0 / 0
FTS для внешних данных
    #39252277
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukOleg Bartunovпропущено...


Можно, если знаете как добраться до файлов из постгреса, например, в pl/perl, pl/python.

Все равно в базе придется хранить tsvector который по размеру будет не то чтобы сильно меньше исходного текста в файле.
А вот так чтобы FTS GIN индекс построенный по данным вне базы + ссылка на файл в таблице - по моему это невозможно (так чтобы tsvector не хранился в базе вообще).


--
Maxim Boguk
www.postgresql-consulting.ru

возможно, надо функциональный индекс использовать. Вот Citus недавно пример привел https://www.citusdata.com/blog/14-marco/410-scalable-real-time-product-search-using-citus
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / FTS для внешних данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]