powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / to_tsvector Выбор конфигурации
3 сообщений из 3, страница 1 из 1
to_tsvector Выбор конфигурации
    #35724685
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать так чтоб в зависимости языка индексируемого документа применялась та или инная конфигурация TS

вот пример тригерной функции
в NEW.lang это переменная varchar. (ru, ua, en,)
соответственно созданы конфигурации (ru, ua, en,).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
        IF (TG_OP = 'INSERT') THEN
		NEW.fts_name := to_tsvector(NEW.lang, NEW.name);
                -- NEW.fts_summary := to_tsvector(NEW.lang, NEW.fts_summary);            
		RETURN NEW;
        ELSIF (TG_OP = 'UPDATE') THEN
            IF OLD.name != NEW.name THEN 	
                -- NEW.fts_name := to_tsvector(NEW.lang, NEW.name);                   
            END IF;
            RETURN NEW;             
	END IF;
END;

при ввыполнеии получаю ошибку
Код: plaintext
ERROR: function to_tsvector(character varying, character varying) does not exist LINE  1 : SELECT to_tsvector( $ 1  , $ 2  ) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. QUERY: SELECT to_tsvector( $ 1  , $ 2  ) CONTEXT: PL/pgSQL function "trg_ins_upd_articles" line  3  at assignment
...
Рейтинг: 0 / 0
to_tsvector Выбор конфигурации
    #35725007
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ss25Хочу сделать так чтоб в зависимости языка индексируемого документа применялась та или инная конфигурация TS

вот пример тригерной функции
в NEW.lang это переменная varchar. (ru, ua, en,)
соответственно созданы конфигурации (ru, ua, en,).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
        IF (TG_OP = 'INSERT') THEN
		NEW.fts_name := to_tsvector(NEW.lang, NEW.name);
                -- NEW.fts_summary := to_tsvector(NEW.lang, NEW.fts_summary);            
		RETURN NEW;
        ELSIF (TG_OP = 'UPDATE') THEN
            IF OLD.name != NEW.name THEN 	
                -- NEW.fts_name := to_tsvector(NEW.lang, NEW.name);                   
            END IF;
            RETURN NEW;             
	END IF;
END;

при ввыполнеии получаю ошибку
Код: plaintext
ERROR: function to_tsvector(character varying, character varying) does not exist LINE  1 : SELECT to_tsvector( $ 1  , $ 2  ) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. QUERY: SELECT to_tsvector( $ 1  , $ 2  ) CONTEXT: PL/pgSQL function "trg_ins_upd_articles" line  3  at assignment


Посмотри в
Код: plaintext
1.
2.
3.
4.
5.
6.
postgres=# \df to_tsvector
                         List of functions
   Schema   |    Name     | Result data type | Argument data types
------------+-------------+------------------+---------------------
 pg_catalog | to_tsvector | tsvector         | regconfig, text
 pg_catalog | to_tsvector | tsvector         | text

Название конфигурации должно быть типом REGCONFIG
...
Рейтинг: 0 / 0
to_tsvector Выбор конфигурации
    #35726063
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю за помощь
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / to_tsvector Выбор конфигурации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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