powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PgSql 8.2.4 и Tsearch2
6 сообщений из 6, страница 1 из 1
PgSql 8.2.4 и Tsearch2
    #35095523
shuler239
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравсвуйте!

Возникла проблема с реализацией полнотекстового поиска.
Сначала на тестовой базе был выполнен такой скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
UPDATE pg_ts_cfg SET locale = 'ru_RU.cp1251';
INSERT into pg_ts_dict
SELECT 'ru_ispell', dict_init, 'DictFile="../share/contrib/dict/russian.dict", AffFile="../share/contrib/dict/russian.aff", StopFile="../share/contrib/dict/russian.stop"', dict_lexize
FROM pg_ts_dict 
WHERE dict_name='ispell_template';

INSERT into pg_ts_dict
SELECT 'en_ispell', dict_init, 'DictFile="../share/contrib/dict/english.dict", AffFile="../share/contrib/dict/english.aff", StopFile="../share/contrib/dict/english.stop"', dict_lexize
FROM pg_ts_dict 
WHERE dict_name='ispell_template';

DELETE FROM 
    pg_ts_cfgmap 
WHERE 
    ts_name = 'default_russian'
    AND tok_alias IN ('hword', 'lhword', 'lpart_hword', 'lword', 
        'nlhword', 'nlpart_hword', 'nlword');


INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'hword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lhword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lpart_hword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlhword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlpart_hword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlword', '{ru_ispell,simple}');

Некторые функции, типа to_tsvector, работают правльно.
Но при выполнении следущего скрипта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
alter table pages add column fts tsvector;
update pages set fts=
	setweight( coalesce( to_tsvector(title),''),'A') ||
	setweight( coalesce( to_tsvector(keywords),''),'B') ||
	setweight( coalesce( to_tsvector(description),''),'C') ||
	setweight( coalesce( to_tsvector(foreword),''),'D') ||
	setweight( coalesce( to_tsvector(content),''),'E');

create index pages_fts_idx on pages using gist(fts);

vacuum analyze pages;

возникла ошибка could not find tsearch config by locale

Логично, что надо сделать конфиг для Tsearch, но запросы типа CREATE FULLTEXT CONFIGURATION не проходят(((

Помогите, в чем проблема?
...
Рейтинг: 0 / 0
PgSql 8.2.4 и Tsearch2
    #35095905
netscripter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запросы типа CREATE FULLTEXT CONFIGURATION работают начиная с версии 8.3
Что касается ошибки, тут дело в том что конфигурация локали ftsearch не совпадает с текущей локалью соедниения. У меня например и там и там UTF-8 и нет проблем. Вообще рекомендуется использовать UTF8. Но может помочь принудительное указание to_tsvector('default_russian', title). Вроде так
...
Рейтинг: 0 / 0
PgSql 8.2.4 и Tsearch2
    #35095977
shuler239
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netscripterНо может помочь принудительное указание to_tsvector('default_russian', title).

Точно, ведь именно так я и использовал, а во втором скрипте не указывал... Ступил.
Спасибо большое!!! Завтра попробуем!!!

А по поводу UTF-8 согласен, но все никак не перейти, все базы в cp1251... Даже словари пришлось конвертировать, чтобы стабильно работало...
...
Рейтинг: 0 / 0
PgSql 8.2.4 и Tsearch2
    #35096828
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shuler239Здравсвуйте!

Возникла проблема с реализацией полнотекстового поиска.
Сначала на тестовой базе был выполнен такой скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
UPDATE pg_ts_cfg SET locale = 'ru_RU.cp1251';
INSERT into pg_ts_dict
SELECT 'ru_ispell', dict_init, 'DictFile="../share/contrib/dict/russian.dict", AffFile="../share/contrib/dict/russian.aff", StopFile="../share/contrib/dict/russian.stop"', dict_lexize
FROM pg_ts_dict 
WHERE dict_name='ispell_template';

INSERT into pg_ts_dict
SELECT 'en_ispell', dict_init, 'DictFile="../share/contrib/dict/english.dict", AffFile="../share/contrib/dict/english.aff", StopFile="../share/contrib/dict/english.stop"', dict_lexize
FROM pg_ts_dict 
WHERE dict_name='ispell_template';

DELETE FROM 
    pg_ts_cfgmap 
WHERE 
    ts_name = 'default_russian'
    AND tok_alias IN ('hword', 'lhword', 'lpart_hword', 'lword', 
        'nlhword', 'nlpart_hword', 'nlword');


INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'hword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lhword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lpart_hword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'lword', '{en_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlhword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlpart_hword', '{ru_ispell,simple}');
INSERT INTO pg_ts_cfgmap (ts_name, tok_alias, dict_name)
       VALUES ('default_russian', 'nlword', '{ru_ispell,simple}');

Некторые функции, типа to_tsvector, работают правльно.
Но при выполнении следущего скрипта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
alter table pages add column fts tsvector;
update pages set fts=
	setweight( coalesce( to_tsvector(title),''),'A') ||
	setweight( coalesce( to_tsvector(keywords),''),'B') ||
	setweight( coalesce( to_tsvector(description),''),'C') ||
	setweight( coalesce( to_tsvector(foreword),''),'D') ||
	setweight( coalesce( to_tsvector(content),''),'E');

create index pages_fts_idx on pages using gist(fts);

vacuum analyze pages;

возникла ошибка could not find tsearch config by locale

Логично, что надо сделать конфиг для Tsearch, но запросы типа CREATE FULLTEXT CONFIGURATION не проходят(((

Помогите, в чем проблема?

у нас только 4 зоны поддержиаются ! откуда 'E' взялась ?
про остальное тебе все рассказали
...
Рейтинг: 0 / 0
PgSql 8.2.4 и Tsearch2
    #35097634
shuler239
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg Bartunovу нас только 4 зоны поддержиаются ! откуда 'E' взялась ?
я уже понял...
...
Рейтинг: 0 / 0
PgSql 8.2.4 и Tsearch2
    #35098026
shuler239
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И спасибо вам всем большое за помощь!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PgSql 8.2.4 и Tsearch2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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