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

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

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

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

А по поводу UTF-8 согласен, но все никак не перейти, все базы в cp1251... Даже словари пришлось конвертировать, чтобы стабильно работало...
...
Рейтинг: 0 / 0
30.01.2008, 11:35
    #35096828
Oleg Bartunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PgSql 8.2.4 и Tsearch2
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
30.01.2008, 14:24
    #35097634
shuler239
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PgSql 8.2.4 и Tsearch2
Oleg Bartunovу нас только 4 зоны поддержиаются ! откуда 'E' взялась ?
я уже понял...
...
Рейтинг: 0 / 0
30.01.2008, 15:58
    #35098026
shuler239
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PgSql 8.2.4 и Tsearch2
И спасибо вам всем большое за помощь!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PgSql 8.2.4 и Tsearch2 / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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