New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Не выводится словарная статья по гипертекстовой ссылке

Сообщаем о найденных ошибках сюда

Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Sun Jul 28, 2013 3:00 pm

Операционная система: Ubuntu Saucy Salamander (development branch), Release: 13.10.
Версия словаря GoldenDict: 1.5.0-RC-101-gf2ebba1
Словарь: "Греческо-русский лексикон Нового Завета", "Древнееврейско-русский лексикон Ветхого Завета"
Действия: На панели поиска в поле "Искать" напечатайте слово "αγιωσυνη" и нажмите на Enter. Будет показана словарная статья для этого слова из словаря "Греческо-русский лексикон Нового Завета". В тексте имеется гипертекстовая ссылка на словарную статью для слова קֹ֫דֶשׁ, она будет выделена цветом и подчёркнутая. Щелкните на ней - должны будут показаны все словарные статьи, на которые сделана ссылка. В частности в словаре "Древнееврейско-русский лексикон Ветхого Завета" есть соответствующая словарная статья, которая не будет показана.
Суть проблемы: Словарные базы в формате DICT (dictd) обычно создаются такими, что поиск по ним производится с использованием только алфавитно-цифровых символов. GoldenDict использует другую стратегию и это делает его работу отличной от работы DICT-клиентов. Например в DICT-клиенте Xfce4 Dictionary вышеупомянутые действия приводят к тому, что выводятся словарные статьи для всех слов, где присутствуют три буквы קדש, без учёта ивритской огласовки (некудот). Огласовка (некудот) не входит в число алфавитно-цифровых символов. Поэтому при поиске в DICT-клиенте для слов с различными огласовками будет выводится один и тот же результат. Например для различных запросов:
  1. קדשׁ
  2. קֶדֶשׁ
  3. קֹדֶשׁ
  4. קָדֵשׁ
  5. קָדֹשׁ
будут выводится те же самые словарные статьи, даже если в запросе присутствует слово с несуществующей огласовкой (введённой "от фонаря"). Таким образом словарь Xfce4 Dictionary по гипертекстовой ссылке на словарную статью для слова קֹ֫דֶשׁ показывает необходимые словарные статьи, а GoldenDict нет. Это связано с тем, что в гипертекстовой ссылке присутствует дополнительный диакритический знак (U+05AB HEBREW ACCENT OLE, который используется для указания на ударный слог). В словаре "Древнееврейско-русский лексикон Ветхого Завета" у этого слова отсутствует данный диакритический символ. Но индексный файл этой словарной базы не содержит специальный заголовок: 00-database-allchars, что указывает на то, что словарная база предполагает такой поиск, когда используются только алфавитные символы, цифры и пробел. См. man dictfmt:
Code: Select all
--allchars
              Specifies that all characters should be used for the search, by default only alpha‐
              betic,  numeric characters and spaces are put to .index file and therefore are used
              in search. Creates the special entry 00-database-allchars.

Получается, что GoldenDict игнорирует эту политику.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Fri Apr 08, 2016 3:36 am

Проблема остаётся быть актуальной для версии словаря GoldenDict: 1.5.0-RC-525-g2221beb.
Проблема воспроизводится для DICT словарей, установленных локально, но не воспроизводится для словарей на DICT-сервере.
Однако для словарей на DICT сервере, если в тексте имеется гипертекстовая ссылка на статью греческого слова с диакритиками, происходит аналогичная проблема.

Что я делаю и что вижу на экране - шаг за шагом.

Операционная система: Windows XP Home Edition, Service Pack 3
Версия словаря GoldenDict: 1.5.0-RC-525-g2221beb
Словарь:
Для установки словаря нажмите F3 и выберите вкладку "Серверы DICT". Щелкните на кнопке Добавить для создания новой настройки DICT-сервера. Дайте название типа "Все на DICT-bibleonline". Впечатайте в поле "Адрес": dict://dict.bibleonline.ru. Поля "Базы" и "Стратегии" оставьте пустыми. Поставьте "галочку" у опции Включено и щелкните на OK.
Действия: В строке поиска напечатайте слово אדם и нажмите на Enter. Будут показаны все словарные статьи для этого слова. Если в тексте имеется гипертекстовая ссылка на словарную статью, она будет выделена цветом (по умолчанию – синим) и подчеркиванием. Щелкните на ней – в основном окне должны будут показаны все статьи, на которые сделана ссылка. Например, найдите греческое слово ἀνήρ и щелкните по нему.
Суть проблемы: В результате вышеприведенных действий в основном окне не будет выведена ни одна словарная статья к слову ἀνήρ. Слово содержит диакритические знаки. В основном окне буквы с диакритиками - это комбинация из двух знаков: буква плюс диакритик, однако в адресе ссылки, в качестве значения атрибута href стоит греческое слово, у которого каждая буква с диакритиком - это один знак. В этом вы можете убедиться, если вызовете Инспектор (F12), найдете этот адрес ссылки, наведете на него курсор, нажмете на правую клавишу мыши и выберете в контекстном меню пункт Копировать адрес ссылки. В результате получите ссылку:
gdlookup://localhost/%E1%BC%80%CE%BD%CE%AE%CF%81
Если декодируете её, например, с помощью функции:
Code: Select all
decodeURI('%E1%BC%80%CE%BD%CE%AE%CF%81')
то вы получите слово: ἀνήρ (здесь 4 знака). Должно было быть ἀνήρ (6 знаков), т.е. %CE%B1%CC%93%CE%BD%CE%B7%CC%81%CF%81 вместо %E1%BC%80%CE%BD%CE%AE%CF%81.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Abs62 » Fri Apr 08, 2016 11:49 am

Судя по всему, Webkit нормализует переданные ему некодированные ссылки перед тем, как перевести их в процентную кодировку. Значит, надо кодировать их до передачи. Поправлю.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Mon Apr 11, 2016 6:37 pm

Abs62 wrote:Судя по всему, Webkit нормализует переданные ему некодированные ссылки перед тем, как перевести их в процентную кодировку. Значит, надо кодировать их до передачи. Поправлю.

GoldenDict, версия 1.5.0-RC-533-g5ff9838
Проблема решена для DICT-сервера, но эта же самая проблема остаётся для DICT-словарей, установленных локально.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Abs62 » Mon Apr 11, 2016 8:26 pm

Образец такого словаря найдётся?
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Mon Apr 11, 2016 9:32 pm

Abs62 wrote:Образец такого словаря найдётся?

Самый первый пост содержит ссылки на словари. Ссылки проверил - вроде рабочие. Попробуйте слово אדם для словаря "Древнееврейско-русский лексикон Ветхого Завета". Посмотрите в Инспекторе адрес ссылки к слову ἀνήρ - то же %E1%BC%80%CE%BD%CE%AE%CF%81 вместо %CE%B1%CC%93%CE%BD%CE%B7%CC%81%CF%81.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Abs62 » Tue Apr 12, 2016 8:17 am

Вообще говоря, в локальном словаре из первого поста GD в обоих вариантах нужную статью находит. Но можно и поправить для унификации поведения.
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Tue Apr 12, 2016 9:26 am

Abs62 wrote:Вообще говоря, в локальном словаре из первого поста GD в обоих вариантах нужную статью находит. Но можно и поправить для унификации поведения.

Именно на это и рассчитывал - на унификацию поведения. Удобнее будет, когда ссылка будет рабочей не только для локальных словарей, но и для словарей на DICT-сервере.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Michael72 » Wed Apr 13, 2016 3:37 pm

Критичность проблемы, поднятой в первом посте, можно лучше понять при выборе словаря:
heb-rus_strong.zip
Древнееврейско-русский лексикон Ветхого Завета
(293.91 KiB) Downloaded 1384 times
Создание словаря выполнялось по команде:
Code: Select all
USERDATA_PATH="$HOME/Документы/Словари"; BD="heb-rus_strong"; cd /usr/share/dictd/dictmime; cat $USERDATA_PATH/$BD.html | sudo dictfmt -e -u 'http://michael72.radiushosting.ru/UPRAVLEN/DICT.shtml?td' -s "Древнееврейско-русский лексикон Ветхого Завета" --utf8 --columns 0 $BD; sudo dictzip $BD.dict

В отличие от словаря, на который даётся ссылка в первом посте, здесь не использовался ключ --index-keep-orig, в результате чего четвёртый столбец со списком слов с огласовкой (некудот) и дагешами отсутствует. Принцип работы GoldenDict с этим столбцом был создан при этом обсуждении.
Этот принцип работы оказался ошибочным. В мане к ключу --index-keep-orig поясняется, что четвёртый столбец используется для MATCH запросов. См.
Code: Select all
       --index-keep-orig
              When --utf-8 is specified headwords are lowercased and non-alphanumeric  characters
              are  removed  from it before saving to .index file in order to simplify the search.
              When --index-keep-orig option is used fourth column is created  (if  necessary)  in
              .index  file, and contains an original headword which is returned by MATCH command.
              This option may be useful to prevent converting " AT&T" to " ATT" or to keep proper
              nouns with uppercased first letter.

Из этого обсуждения следует, что результаты от MATCH запросов на DICT-сервер показываются в выпадающем списке вариантов. Таким образом, было бы логично и для локальных DICT-словарей информацию из четвёртого столбца использовать только для списка вариантов. Сама же проблема поиска слов с диакритическими символами должна решаться не путём использования четвёртого столбца, а иначе.
Сперва необходимо проверить index-файл на наличие специального слова 00-database-allchars. Если это слово отсутствует, то искомое выражение предварительно должно быть очищено от всех символов, которые не являются алфавитно-цифровым или пробелом (например, при помощи функции iswalnum). Иначе используется искомое выражение как есть, без фильтрации.
Итак, сейчас ещё раз подробно опишу нашу ситуацию.

Что я делаю и что вижу на экране - шаг за шагом.

Операционная система: Windows XP Home Edition, Service Pack 3
Версия словаря GoldenDict: 1.5.0-RC-533-g5ff9838
Словарь:
heb-rus_strong.zip
Древнееврейско-русский лексикон Ветхого Завета
(293.91 KiB) Downloaded 1384 times

Установка словаря
Для чистоты эксперимента перед установкой убедитесь, что такой словарь у вас ещё не установлен (например, тот, который доступен по ссылке в первом посте этого обсуждения). Если установлен, то выйдите из программы GoldenDict и удалите его из каталога, который в настройках GoldenDict указан для поиска файлов словарей. Затем запустите GoldenDict. Для установки словаря необходимо скопировать содержимое архива (файлы heb-rus_strong.dict.dz и heb-rus_strong.index) в один из каталогов, в котором GoldenDict ищет файлы словарей, затем выполнить команду Пересканировать файлы.
Действия: В строке поиска напечатайте слово אדם и нажмите на Enter. Будут показаны все словарные статьи для этого слова. Если в тексте имеется гипертекстовая ссылка на словарную статью, она будет выделена цветом (по умолчанию – синим) и подчеркиванием. Щелкнете на такой строке, которая является ссылкой на древнееврейское слово с огласовкой (некудот) – в основном окне должны будут показаны все статьи к слову, упомянутому в данной гипертекстовой строке. Например, найдите слово גִּבּוֹר‎ и щелкните по нему - в основном окне не будет выведена ни одна словарная статья к слову גִּבּוֹר‎.
Суть проблемы не в гипертекстовой ссылке. Например, если задать поиск по слову с огласовкой через строку поиска, Поиск не найдет все статьи.
Michael72
 
Posts: 180
Joined: Tue Mar 12, 2013 1:34 pm

Re: Не выводится словарная статья по гипертекстовой ссылке

Postby Abs62 » Wed Apr 13, 2016 7:55 pm

То есть в первом столбце индекса по стандарту вообще не может быть никакой диакритики? Для всех языков?
Abs62
 
Posts: 631
Joined: Mon Jun 14, 2010 11:51 am

Next

Return to Ошибки

Who is online

Users browsing this forum: No registered users and 15 guests

cron