Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / to_tsvector Выбор конфигурации / 3 сообщений из 3, страница 1 из 1
19.12.2008, 14:02
    #35724685
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
to_tsvector Выбор конфигурации
Хочу сделать так чтоб в зависимости языка индексируемого документа применялась та или инная конфигурация 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
19.12.2008, 15:52
    #35725007
Oleg Bartunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
to_tsvector Выбор конфигурации
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
20.12.2008, 19:06
    #35726063
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
to_tsvector Выбор конфигурации
Благодарю за помощь
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / to_tsvector Выбор конфигурации / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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