Thread: Tsearch strange error
Postgresql 8.2.0 (release) SELECT set_curcfg('default_russian'); Then Tsearch reports the error: ERROR: Affix parse error at 78 line on every subsequent tsearch function call if the_text_to_search_in contains some latin characters. This error was encountered when upgrade from 8.1.4 to 8.2.0
Silly Sad, так вопросы не задают. Что мне гадать, какая у тебя кодировка в базе, откуда ты ispell взял ? Я могу только догадываться, что кодировка у тебя utf-8, а ispell английский ты не сконвертировал в utf-8. Олег On Wed, 21 Mar 2007, silly_sad wrote: > Postgresql 8.2.0 (release) > > SELECT set_curcfg('default_russian'); > Then > Tsearch reports the error: > ERROR: Affix parse error at 78 line > on every subsequent tsearch function call > if the_text_to_search_in contains some latin characters. > > This error was encountered when upgrade from 8.1.4 to 8.2.0 > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster > Regards, Oleg _____________________________________________________________ Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru), Sternberg Astronomical Institute, Moscow University, Russia Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(495)939-16-83, +007(495)939-23-83
Oleg Bartunov wrote: > Silly Sad, > > так вопросы не задают. Что мне гадать, какая у тебя кодировка > в базе, откуда ты ispell взял ? Я могу только догадываться, > что кодировка у тебя utf-8, а ispell английский ты не сконвертировал > в utf-8. Не надо гадать, всё расскажу, если спросишь. База создана with encoding koi8 кодировка клиента koi8 кодировка текстов всех koi8 а что я должен был сделать с ispell и с какими ? >> Postgresql 8.2.0 (release) >> >> SELECT set_curcfg('default_russian'); >> Then >> Tsearch reports the error: >> ERROR: Affix parse error at 78 line >> on every subsequent tsearch function call >> if the_text_to_search_in contains some latin characters. >> >> This error was encountered when upgrade from 8.1.4 to 8.2.0
> так вопросы не задают. Что мне гадать, какая у тебя кодировка > в базе, откуда ты ispell взял ? Я могу только догадываться, > что кодировка у тебя utf-8, а ispell английский ты не сконвертировал > в utf-8. и вот ещё эта информация будет полезной: SELECT * from pg_ts_cfg; ts_name | prs_name | locale -----------------+----------+-------------- default | default | C utf8_russian | default | ru_RU.UTF-8 simple | default | default_russian | default | ru_RU.KOI8-R инициализировано это было так INSERT INTO pg_ts_dict (SELECT 'ru_ispell', dict_init, 'DictFile="/usr/local/cms1/sql/russian.dict",' 'AffFile="/usr/local/cms1/sql/russian.aff",' 'StopFile="/usr/local/cms1/sql/russian.stop"', dict_lexize FROM pg_ts_dict WHERE dict_name = 'ispell_template'); UPDATE pg_ts_cfg SET locale = 'ru_RU.KOI8-R' WHERE ts_name = 'default_russian'; DELETE FROM pg_ts_cfgmap WHERE ts_name = 'default_russian'; INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'url', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'host', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'sfloat', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'uri', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'int', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'float', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'email', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'word', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'hword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlpart_hword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'part_hword', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlhword', '{ru_ispell,ru_stem_koi8}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'file', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'uint', '{simple}'); INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'version', '{simple}'); Словари эти чудесно работали в 8.1.4
On Wed, 21 Mar 2007, silly_sad wrote: > Oleg Bartunov wrote: >> Silly Sad, >> >> так вопросы не задают. Что мне гадать, какая у тебя кодировка >> в базе, откуда ты ispell взял ? Я могу только догадываться, >> что кодировка у тебя utf-8, а ispell английский ты не сконвертировал >> в utf-8. > > Не надо гадать, всё расскажу, если спросишь. ты должен поделиться всей релевантной информацией, которая может помочь идентифицировать твою проблему. А вытягивать из тебя ее нет времени. > > База создана with encoding koi8 > кодировка клиента koi8 > кодировка текстов всех koi8 > > а что я должен был сделать с ispell и с какими ? > > >>> Postgresql 8.2.0 (release) >>> >>> SELECT set_curcfg('default_russian'); >>> Then >>> Tsearch reports the error: >>> ERROR: Affix parse error at 78 line >>> on every subsequent tsearch function call >>> if the_text_to_search_in contains some latin characters. >>> >>> This error was encountered when upgrade from 8.1.4 to 8.2.0 > Regards, Oleg _____________________________________________________________ Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru), Sternberg Astronomical Institute, Moscow University, Russia Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(495)939-16-83, +007(495)939-23-83
On Wed, 21 Mar 2007, silly_sad wrote: >> так вопросы не задают. Что мне гадать, какая у тебя кодировка >> в базе, откуда ты ispell взял ? Я могу только догадываться, >> что кодировка у тебя utf-8, а ispell английский ты не сконвертировал >> в utf-8. > > и вот ещё эта информация будет полезной: > > SELECT * from pg_ts_cfg; > > ts_name | prs_name | locale > -----------------+----------+-------------- > default | default | C > utf8_russian | default | ru_RU.UTF-8 > simple | default | > default_russian | default | ru_RU.KOI8-R > > инициализировано это было так > > INSERT INTO pg_ts_dict > (SELECT 'ru_ispell', > dict_init, > 'DictFile="/usr/local/cms1/sql/russian.dict",' > 'AffFile="/usr/local/cms1/sql/russian.aff",' > 'StopFile="/usr/local/cms1/sql/russian.stop"', > dict_lexize > FROM pg_ts_dict > WHERE dict_name = 'ispell_template'); > > UPDATE pg_ts_cfg SET locale = 'ru_RU.KOI8-R' WHERE ts_name = > 'default_russian'; > > DELETE FROM pg_ts_cfgmap WHERE ts_name = 'default_russian'; > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', > '{ru_ispell,ru_stem_koi8}'); Хмм, а зачем ты английские слова пропускаешь через русские словари ? > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'url', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'host', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'sfloat', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'uri', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'int', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'float', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'email', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'word', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'hword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlpart_hword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'part_hword', > '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'nlhword', > '{ru_ispell,ru_stem_koi8}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'file', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'uint', '{simple}'); > INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'version', '{simple}'); > > Словари эти чудесно работали в 8.1.4 > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster > Regards, Oleg _____________________________________________________________ Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru), Sternberg Astronomical Institute, Moscow University, Russia Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(495)939-16-83, +007(495)939-23-83
Oleg Bartunov wrote: > On Wed, 21 Mar 2007, silly_sad wrote: > >>> так вопросы не задают. Что мне гадать, какая у тебя кодировка >>> в базе, откуда ты ispell взял ? Я могу только догадываться, >>> что кодировка у тебя utf-8, а ispell английский ты не сконвертировал >>> в utf-8. >> >> и вот ещё эта информация будет полезной: >> >> SELECT * from pg_ts_cfg; >> >> ts_name | prs_name | locale >> -----------------+----------+-------------- >> default | default | C >> utf8_russian | default | ru_RU.UTF-8 >> simple | default | >> default_russian | default | ru_RU.KOI8-R >> >> инициализировано это было так >> >> INSERT INTO pg_ts_dict >> (SELECT 'ru_ispell', >> dict_init, >> 'DictFile="/usr/local/cms1/sql/russian.dict",' >> 'AffFile="/usr/local/cms1/sql/russian.aff",' >> 'StopFile="/usr/local/cms1/sql/russian.stop"', >> dict_lexize >> FROM pg_ts_dict >> WHERE dict_name = 'ispell_template'); >> >> UPDATE pg_ts_cfg SET locale = 'ru_RU.KOI8-R' WHERE ts_name = >> 'default_russian'; >> >> DELETE FROM pg_ts_cfgmap WHERE ts_name = 'default_russian'; >> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', >> '{ru_ispell,ru_stem_koi8}'); >> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', >> '{ru_ispell,ru_stem_koi8}'); >> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', >> '{ru_ispell,ru_stem_koi8}'); > > Хмм, а зачем ты английские слова пропускаешь через русские словари ? Я их не пропускаю, они просто есть в тексте, в котором необходимо осуществять русскоязычный поиск
On Wed, 21 Mar 2007, silly_sad wrote: > Oleg Bartunov wrote: >> On Wed, 21 Mar 2007, silly_sad wrote: >> >>>> так вопросы не задают. Что мне гадать, какая у тебя кодировка >>>> в базе, откуда ты ispell взял ? Я могу только догадываться, >>>> что кодировка у тебя utf-8, а ispell английский ты не сконвертировал >>>> в utf-8. >>> >>> и вот ещё эта информация будет полезной: >>> >>> SELECT * from pg_ts_cfg; >>> >>> ts_name | prs_name | locale >>> -----------------+----------+-------------- >>> default | default | C >>> utf8_russian | default | ru_RU.UTF-8 >>> simple | default | >>> default_russian | default | ru_RU.KOI8-R >>> >>> инициализировано это было так >>> >>> INSERT INTO pg_ts_dict >>> (SELECT 'ru_ispell', >>> dict_init, >>> 'DictFile="/usr/local/cms1/sql/russian.dict",' >>> 'AffFile="/usr/local/cms1/sql/russian.aff",' >>> 'StopFile="/usr/local/cms1/sql/russian.stop"', >>> dict_lexize >>> FROM pg_ts_dict >>> WHERE dict_name = 'ispell_template'); >>> >>> UPDATE pg_ts_cfg SET locale = 'ru_RU.KOI8-R' WHERE ts_name = >>> 'default_russian'; >>> >>> DELETE FROM pg_ts_cfgmap WHERE ts_name = 'default_russian'; >>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', >>> '{ru_ispell,ru_stem_koi8}'); >>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', >>> '{ru_ispell,ru_stem_koi8}'); >>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', >>> '{ru_ispell,ru_stem_koi8}'); >> >> Хмм, а зачем ты английские слова пропускаешь через русские словари ? > > Я их не пропускаю, они просто есть в тексте, в котором необходимо > осуществять русскоязычный поиск у тебя написано 'lhword' -> '{ru_ispell,ru_stem_koi8}') ! Это чистый бред, так как эти словари не знают английских слов. Нужно нечто вроде этого, если хочешь индексировать английские слова default_russian | lword | {en_ispell,en_stem} default_russian | lpart_hword | {en_ispell,en_stem} default_russian | lhword | {en_ispell,en_stem} default_russian | nlword | {ru_ispell,ru_stem_koi8} default_russian | nlpart_hword | {ru_ispell,ru_stem_koi8} default_russian | nlhword | {ru_ispell,ru_stem_koi8} Regards, Oleg _____________________________________________________________ Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru), Sternberg Astronomical Institute, Moscow University, Russia Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(495)939-16-83, +007(495)939-23-83
Oleg Bartunov wrote: >>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', >>>> '{ru_ispell,ru_stem_koi8}'); >>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', >>>> '{ru_ispell,ru_stem_koi8}'); >>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', >>>> '{ru_ispell,ru_stem_koi8}'); >>> >>> Хмм, а зачем ты английские слова пропускаешь через русские словари ? >> >> Я их не пропускаю, они просто есть в тексте, в котором необходимо >> осуществять русскоязычный поиск > > у тебя написано 'lhword' -> '{ru_ispell,ru_stem_koi8}') ! > Это чистый бред, так как эти словари не знают английских слов. > > Нужно нечто вроде этого, если хочешь индексировать английские слова > > default_russian | lword | {en_ispell,en_stem} > default_russian | lpart_hword | {en_ispell,en_stem} > default_russian | lhword | {en_ispell,en_stem} > default_russian | nlword | {ru_ispell,ru_stem_koi8} > default_russian | nlpart_hword | {ru_ispell,ru_stem_koi8} > default_russian | nlhword | {ru_ispell,ru_stem_koi8} Я не хочу индексировать английские слова, я хочу чтобы индексировались русские слова, но английским словам в тексте быть было не запрещено.
On Wed, 21 Mar 2007, silly_sad wrote: > Oleg Bartunov wrote: > >>>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lhword', >>>>> '{ru_ispell,ru_stem_koi8}'); >>>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lpart_hword', >>>>> '{ru_ispell,ru_stem_koi8}'); >>>>> INSERT INTO pg_ts_cfgmap VALUES ('default_russian', 'lword', >>>>> '{ru_ispell,ru_stem_koi8}'); >>>> >>>> Хмм, а зачем ты английские слова пропускаешь через русские словари ? >>> >>> Я их не пропускаю, они просто есть в тексте, в котором необходимо >>> осуществять русскоязычный поиск >> >> у тебя написано 'lhword' -> '{ru_ispell,ru_stem_koi8}') ! >> Это чистый бред, так как эти словари не знают английских слов. >> >> Нужно нечто вроде этого, если хочешь индексировать английские слова >> >> default_russian | lword | {en_ispell,en_stem} >> default_russian | lpart_hword | {en_ispell,en_stem} >> default_russian | lhword | {en_ispell,en_stem} >> default_russian | nlword | {ru_ispell,ru_stem_koi8} >> default_russian | nlpart_hword | {ru_ispell,ru_stem_koi8} >> default_russian | nlhword | {ru_ispell,ru_stem_koi8} > > Я не хочу индексировать английские слова, я хочу чтобы индексировались > русские слова, но английским словам в тексте быть было не запрещено. тогда зачем ты их пропускаешь через русские словари ? Просто убери их из конфигурации и они не будут индексироваться. Но мы отклонились в сторону. Пришли в приват ispell-вские файлы (.dict, .aff) и напиши в конце-концов запрос, на котором у тебя глюки вылезают. Regards, Oleg _____________________________________________________________ Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru), Sternberg Astronomical Institute, Moscow University, Russia Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(495)939-16-83, +007(495)939-23-83
всем спасибо разобрались не те словари использовали