Thread: Tsearch strange error

Tsearch strange error

From
silly_sad
Date:
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

Re: Tsearch strange error

From
Oleg Bartunov
Date:
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

Re: Tsearch strange error

From
silly_sad
Date:
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

Re: Tsearch strange error

From
silly_sad
Date:
> так вопросы не задают. Что мне гадать, какая у тебя кодировка
> в базе, откуда ты 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

Re: Tsearch strange error

From
Oleg Bartunov
Date:
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

Re: Tsearch strange error

From
Oleg Bartunov
Date:
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

Re: Tsearch strange error

From
silly_sad
Date:
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}');
>
> Хмм, а зачем ты английские слова пропускаешь через русские словари ?

Я их не пропускаю, они просто есть в тексте, в котором необходимо
осуществять русскоязычный поиск

Re: Tsearch strange error

From
Oleg Bartunov
Date:
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

Re: Tsearch strange error

From
silly_sad
Date:
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}

Я не хочу индексировать английские слова, я хочу чтобы индексировались
русские слова, но английским словам в тексте быть было не запрещено.


Re: Tsearch strange error

From
Oleg Bartunov
Date:
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

Re: Tsearch strange error

From
silly_sad
Date:
всем спасибо
разобрались

не те словари использовали