Page 1 of 1

Не пересоздавать индексы при каждом запуске

PostPosted: Thu Jan 26, 2012 6:52 pm
by ache
При каждом запуске появляется окно "Запуск GoldenDict", "Создаются индексы словарей". И с минуту что-то сканирует (видимо потому, что словарей много).

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

Версия GoldenDict 1.0.1. Gentoo Linux AMD64.

На всякий случай: директория ~/.goldendict/index/ существует и доступна пользователю для записи. Там лежит куча файлов, тоже доступных для записи. Ничего не обновлялось с момента первого запуска, когда я подключил эти словари.

Re: Не пересоздавать индексы при каждом запуске

PostPosted: Thu Jan 26, 2012 8:58 pm
by Tvangeste
Сравните таймстампы файлов со словарями и индексов.

У меня такое было разок, когда у словарей были даты выставлены в будущее, и GD сравнивал их с датами создания индексных файлов и видел, что словари-то свежее, и заново переиндексировал. Полечилось все touch'ем всех словарей.

Re: Не пересоздавать индексы при каждом запуске

PostPosted: Fri Jan 27, 2012 4:33 am
by ache
Словари — не новее 2009 года. Индексы — от 9 января 2011 года.

С датами всё нормально.

Re: Не пересоздавать индексы при каждом запуске

PostPosted: Fri Jan 27, 2012 6:26 am
by ikm
А всё время переиндексируемые словари работают? Может, оно пытается каждый раз их проиндексировать, а потом наталкивается на ошибку? В таких случаях проблемные словари внутри программы доступны не будут.

Re: Не пересоздавать индексы при каждом запуске

PostPosted: Sun Jan 29, 2012 10:46 am
by ache
Точно! Запустил goldendict в консоли, посыпались ошибки вида:

Stardict's dictionary reading failed: <имя файла>, error: Can't decode the given string from Utf8: <много мусора явно не в UTF-8>

Поэкспериментировал с симлинками и директориями. Все проблемные файлы — с расширением *.ifo. Часть *.ifo читается корректно. Насколько я помню, версия 0.9 нормально читала все.

Лечится? Куда копать?

Заодно вопрос: в архиве для словаря лежат 6 файлов. Например:

AmericanaEnRu_abrv.dict.dz
AmericanaEnRu_abrv.idx.gz
AmericanaEnRu_abrv.ifo
AmericanaEnRu.dict.dz
AmericanaEnRu.idx.gz
AmericanaEnRu.ifo

Это — 3 части одного словаря, или 1 словарь в 3 разных форматах? Если второе — которые форматы должен читать GoldenDict? Сейчас он выдаёт ошибку на *_abrv.ifo, если его нет — на *.ifo, если и его убрать — не находит словарь.