Bug 1709 - definitions of certain matched words can\'t be retrieven
Summary: definitions of certain matched words can\'t be retrieven
Status: REOPENED
Alias: None
Product: Sisyphus
Classification: Development
Component: dict (show other bugs)
Version: unstable
Hardware: all Linux
: P5 minor
Assignee: Vitaly Lipatov
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-12-12 18:29 MSK by imz
Modified: 2008-09-06 23:23 MSD (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description imz 2002-12-12 18:29:34 MSK
I\'m working in a Russian environment. I want to see the definition for the German word uebrigens. I\'m not able to enter the first letter. Therefore, i decide to use suffix matching. It matches the required word, but can\'t retrieve the definition, because it transmits the request with a ? as the first letter.

The same problem in gnome-dictionary.

After all, it would be nice to have a matching algorithm that would match \"ae\" and the corresponding letter and the like. Now there is none such.
---
$ dict -s suffix brigens -r
* Send/2: client \"dict 1.8.0/rf on Linux 2.4.20-alt0.1-adv-up\"
match * suffix \"brigens\"
* Read: 220 arrakis.zephyrous dictd 1.8.0/rf on Linux 2.4.20-alt0.1-adv-up <auth                                                                                                 
.mime&gt; &lt;<a href="mailto:50.10966.1039706374@arrakis.zephyrous&gt" target="_new">50.10966.1039706374@arrakis.zephyrous&gt</a>;
* Status = 220
* Processed 2
* Read: 250 ok
* Status = 250
* Processed 3
* Processed 4
* Read: 152 1 matches found
* Status = 152
* Text: deu-eng \&quot;ц╪brigens\&quot;
* Text: .
* Read: 250 ok [d/m/c = 0/1/1055598; 1.000r 0.000u 0.000s]
* Status = 250
* Processed 10
* Send/13
* Processed 13
* Send/14: define deu-eng \&quot;?brigens\&quot;
quit
* Read: 552 no match [d/m/c = 0/0/16; 0.000r 0.000u 0.000s]
* Status = 552
* Processed 11
No definitions found for \&quot;?brigens\&quot;
* Processed 1
* Read: 221 bye [d/m/c = 0/0/0; 1.000r 0.000u 0.000s]
* Status = 221
* Processed 14

---
dict-deu-eng-0.2-alt1
dict-1.8.0-alt1
dictd-1.8.0-alt1

Comment 1 Vitaly Lipatov 2006-03-07 10:45:54 MSK
$ dict -s suffix brigens -r 
dict: mbrtowc.c:79: mbrtowc: Assertion `(__ctype_get_mb_cur_max ()) > 1' 
failed. 
Aborted 
 
Comment 2 Michael Shigorin 2006-12-16 17:52:06 MSK
I guess #1672 is rather about this...
Comment 3 Michael Shigorin 2006-12-16 17:53:59 MSK
reassign...
Comment 4 Vitaly Lipatov 2006-12-17 00:01:48 MSK
В нашем клиенте dict, который лежит в Сизифе, используется libnatspec и 
символы, которые не могут быть отображены в текущей кодировке консоли, 
транслитерируются.
Что с запросами, надо проверить. Нужен более понятный (мне) testcase.
Comment 5 Vitaly Lipatov 2006-12-29 09:48:09 MSK
Пока не покажете пример, я буду считать что эта четырёхлетняя бага уже не 
воспроизводима.
Comment 6 Ivan Zakharyaschev 2008-09-05 01:32:26 MSD
(In reply to comment #5)
> Пока не покажете пример, я буду считать что эта четырёхлетняя бага уже не 
> воспроизводима.


Да всё тот же пример. Вот, на dict-1.9.15-alt5, dictd-1.9.15-alt5, dict-deu-eng-0.2-alt2.1.1.

Дело в кривости dict внутри: он перекодирует для пользователя слишком рано, а не должен. Он не должен перекодировать как для пользователя то, что посылает серверу на втором раунде (а получил на первом раунде переговоров).

Пример, когда всё хорошо (потому что перекодировка не мешает: нашёл по образцу, показал, что нашёл по образцу):

$ dict -s suffix leicherweise -r -m
deu-eng:  gleicherweise
$ dict -s suffix leicherweise -r   

From German-English Freedict dictionary [deu-eng]:

  gleicherweise [glaic,rvaiz@]
       alike
$ 

Пример, когда плохо: 
$ dict -s suffix brigens -r -m
deu-eng:  u:brigens
$ dict -s suffix brigens -r   
No definitions found for "u:brigens"
$ 

А должен был показать.
Comment 7 Ivan Zakharyaschev 2008-09-05 01:33:58 MSD
(In reply to comment #2)
> I guess #1672 is rather about this...

No, it's different (or rather: it's opposite -- that kind of recoding interferes here into dict's sane operation).
Comment 8 Ivan Zakharyaschev 2008-09-05 01:36:39 MSD
(In reply to comment #6)

$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES=POSIX
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"
LC_ALL=
$ 

> Пример, когда плохо: 
> $ dict -s suffix brigens -r -m
> deu-eng:  u:brigens
> $ dict -s suffix brigens -r   
> No definitions found for "u:brigens"
> $ 
> 
> А должен был показать.

Comment 9 Michael Shigorin 2008-09-06 11:47:15 MSD
Иван, а не хотите заняться dict?  У нас он последние годы неухоженный...
Comment 10 Vitaly Lipatov 2008-09-06 21:12:09 MSD
Что значит неухоженный? См. changelog?
И нет ли здесь того, кто голосовал за прекращение борьбы за koi8-r?
Comment 11 Yuri N. Sedunov 2008-09-06 21:31:18 MSD
(In reply to comment #10)
> Что значит неухоженный? См. changelog?
> И нет ли здесь того, кто голосовал за прекращение борьбы за koi8-r?
> 

Разве koi8-r в данном случае имеет значение?

Comment 12 Vitaly Lipatov 2008-09-06 23:23:05 MSD
Что-то добавление ключа -n не решает проблему.
Похоже всё-таки локаль тут ни при чём.