Каталог электронной библиотеки
Nov. 27th, 2009 12:59 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В связи с тем, что lib.rus.ec окончательно скурвился я купил себе 32Гб SD-шку, возникает вопрос о работе с НУ ОЧЕНЬ большим набором электроных книг.
И да, primary target platform - maemo.
Т.е. возникает задача хранения каталога библиотеки отдельно от самой библиотеки, периодической актуализации и т.д.
Основная операция с этим каталогом - найти некоторое множество книг и вытащить его в "рабочий набор", то есть в случае maemo в рабочий каталог FBReader-а, владельцы всяких lbook-ов и openinkpot-ов лучше знают, что у них там.
phd тут рекламировал MyRuLib. Мне не понравилось. Во-первых, оно требует свежего wxWidgets. Более свежего чем в lenny (хотя пакет якобы для Debian 5.0 на сайте есть), так что даже на десктопе попробовать не получилось.
Во-вторых, в maemo вообще с wxWidgets туго.
В третьих, залез я в их базу данных посредством sqlite и показалось мне что проектировал её типичный php-кодер. Поле genres в таблице books, содержащее конкатенацию каких-то кодов...
Вот и думаю теперь что делать. Либо пытаться все же использовать эту заботливо подготовленную неграмотными людьми базу, либо писать свою извлекалку метаинформации из fb2 (pdf и djvu меня интересуют меньше, потому что на 32Гб флэшку они не влезут и читать их на экране 800x480 неудобно).
Либо вообще прикрутить sqlite-каталог к FBReader-у.
Но вот как должен выглядеть интерфейс этого библиотечного приложения?
Очевидно что просмотр списка из десятков тысяч авторов - не вариант. Тем более что нужен поиск по сериалам (sequence) или названиям.
Столь же очевидно, что о полнотекстовом поиске сразу надо забыть. Сделать полнотекстовый индекс существенно меньший по объему, чем сама библиотека вряд ли удастся, а библиотека занимает более половины доступного объема.
Ничего лучшего, чем повторить форму поиска на сайте lib.rus.ec мне в голову пока не приходит
И да, primary target platform - maemo.
Т.е. возникает задача хранения каталога библиотеки отдельно от самой библиотеки, периодической актуализации и т.д.
Основная операция с этим каталогом - найти некоторое множество книг и вытащить его в "рабочий набор", то есть в случае maemo в рабочий каталог FBReader-а, владельцы всяких lbook-ов и openinkpot-ов лучше знают, что у них там.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Во-вторых, в maemo вообще с wxWidgets туго.
В третьих, залез я в их базу данных посредством sqlite и показалось мне что проектировал её типичный php-кодер. Поле genres в таблице books, содержащее конкатенацию каких-то кодов...
Вот и думаю теперь что делать. Либо пытаться все же использовать эту заботливо подготовленную неграмотными людьми базу, либо писать свою извлекалку метаинформации из fb2 (pdf и djvu меня интересуют меньше, потому что на 32Гб флэшку они не влезут и читать их на экране 800x480 неудобно).
Либо вообще прикрутить sqlite-каталог к FBReader-у.
Но вот как должен выглядеть интерфейс этого библиотечного приложения?
Очевидно что просмотр списка из десятков тысяч авторов - не вариант. Тем более что нужен поиск по сериалам (sequence) или названиям.
Столь же очевидно, что о полнотекстовом поиске сразу надо забыть. Сделать полнотекстовый индекс существенно меньший по объему, чем сама библиотека вряд ли удастся, а библиотека занимает более половины доступного объема.
Ничего лучшего, чем повторить форму поиска на сайте lib.rus.ec мне в голову пока не приходит
no subject
Date: 2009-11-26 10:04 pm (UTC)По поводу интерфейса - с очевидностью, нужна рубрикация и поиск по автору, названию, жанру.
no subject
Date: 2009-11-26 10:09 pm (UTC)почитал комменты на либрусеке
Date: 2009-11-26 10:32 pm (UTC)Похоже на проворкацию, вброс. Не торопиться с выводами, имхо.
Re: почитал комменты на либрусеке
Date: 2009-11-26 10:34 pm (UTC)no subject
Date: 2009-11-26 10:39 pm (UTC)Шучу, шучу.
no subject
Date: 2009-11-26 10:52 pm (UTC)no subject
Date: 2009-11-26 10:52 pm (UTC)Могу предложить Пургуру (с)
Date: 2009-11-26 10:54 pm (UTC)no subject
Date: 2009-11-26 10:55 pm (UTC)дисклэймер!
Date: 2009-11-26 10:57 pm (UTC)б) проект заморожен
в) разрабатывалось под "тыканье пальцем"
no subject
Date: 2009-11-26 11:08 pm (UTC)no subject
Date: 2009-11-26 11:21 pm (UTC)Полнотекстовый индекс нужен по полям с метаинформацией, полнотекстовый по книге практически бесполезен.
no subject
Date: 2009-11-26 11:22 pm (UTC)no subject
Date: 2009-11-26 11:31 pm (UTC)http://code.google.com/p/cutebookshelf/source/browse/trunk/parsers.py
Ostal'naya chast' proekta ne rasschitana osobo na polnuyu biblioteku Lib.rus.ec.
файловая система fuse для архива книг
Date: 2009-11-26 11:51 pm (UTC)Решать нужно три задачи: сохранение и распространение имеющихся книг, организация удобного произвольного доступа к файлам отдельных книг и развитие и пополнение архива. С последней задачей либрусек пока ещё вроде справляется, поэтому наиболее насущны первые две.
1) Распространение. Эффективно — весь архив полностью торрентом (http://torrent.rus.ec/viewforum.php?f=186), но так неудобно для поиска и для получения отдельной книги. Удобно для чтения — находить по автору, жанру, названию — и скачивать по одной или несколько книг. Однако любой централизованный сайт будет или подавлен, или закрыт, или подкуплен (что и наблюдаем). В принципе, массовое пофайловое распространение возможно в P2P, оно децентрализованно, и может быть при желании и анонимным. Однако для P2P важно обеспечить одинаковые и описателные названия файлов и/или извлечение метаданных.
2) Организация произвольного доступа к файлам книг. Пока P2P не станет работающим и массовым вариантом, нужно работать локально с полным архивом. В большинстве случаев мне лично нужно найти искомого автора и затем уже выбрать из списка его книг. Реже — искать по названию или части названия. Предполагаю доступности полного архива (который в торрентах). В целях минимизации места на диске и удобства, желательно, чтобы программа доступа к книге умела работать с архивом именно в том виде, в котором он раздаётся в торрентах.
В связи с этим, меня привлекает следующее решение: user-space файловая система fuse, которая индексирует набор zip-архивов с fb2 и другими файлами внутри (а именно так распространяется архив). Пусть программа-индексатор извлекает из всех fb2 только метаданные. Используя эти метаданные, файловая система может представить архив в естественном библиографически упорядоченном виде. Для пользователя это будет выглядеть как иерархия каталогов, вроде такой:
/author/первая буква фамилии/фамилия и остальные имена, включая других авторов/название произведения/файлы
/genre/название жанра/author/первая буква фамилии/...
/genre/название жанра/title/первая буква названия/название/автор/файлы
/year/19xx/1950/author/...
Файлы при этом должны быть названы описательно, примерно так:
«Фамилия Имя Отчество. Название (Год) Издание.fb2»
При этом:
* для поиска отдельной книги в большинстве случаев хватит обычных средств работы с файлами (файлового менеджера или командной оболочки)
* основные пути поиска книги будут соответствовать вложенности каталогов
* возможны ортогональные иерархии, и по жанру, и по году, и по ISBN, и вообще по чему угодно; раз индекс метаданных уже раз собран
* ничего с самим архивом (85 ГБ на сегодня) делать не надо, его можно хранить и раздавать как есть, то есть массовое распространение библиотеки будет оставаться эффективным, сидов будет больше
* размер индекса, полагаю, будет невелик, а индекс будет меняться редко (старые zip-файлы не меняются, только добавляются новые)
* представление библиотеки в виде файловой системы никак не ограничивает ни выбор читалки, ни выбор полнотекстовых индексаторов (ежели кому-то они всё же понадобятся)
* представление всей библиотеки с библиографически организованной структурой каталогов и описательными названиями файлов, позволит людям легко выкладывать архив как в веб, так и в P2P (ну и вообще будет способствовать частичному, то есть удобному, человечному распространению книг) — и при этом можно раздавать и обновлять архив через торрент.
Мне кажется вариант почти идеальным. Если даже всего несколько десятков или сотен гиков откроют такую виртуальную ФС с библиотекой в P2P, почти любая книга будет легко находиться и быстро скачиваться вообще без централизованной библиотеки. При этом книги будут доступны не только гикам, но и вполне обыкновенным пользователям. За DDOSить такую систему распространения будет трудно. И всех читателей не подкупишь.
FUSE, пишут, есть и для maemo, так что решение может оказаться и вполне мобильным.
Наконец, отмечу, почему мне не нравятся все программы-каталогизаторы (в виндовом стиле), сама идея таких программ. Вместо нормальных полноценных файлов в них можно получить только элементы интерфейса. Это только если на десктопе с экрана читать. Даже взять и скопировать файл на флэшку или карточку памяти в них не всегда возможно.
Re: файловая система fuse для архива книг
Date: 2009-11-27 12:46 am (UTC)Re: файловая система fuse для архива книг
Date: 2009-11-27 01:15 am (UTC)да-да, близок локоть:
Date: 2009-11-27 01:19 am (UTC)Re: файловая система fuse для архива книг
Date: 2009-11-27 01:53 am (UTC)What about Cyrillic/UTF-8 filenames then?
Is it gonna be read-only? Because if it's not - you need to adjust fb2 metadata on every file copy/move operation then...
> ничего с самим архивом (85 ГБ на сегодня) делать не надо
> Файлы при этом должны быть названы описательно, примерно так:
Nu to est' kak minimum pereindeksirovat' i pereimenovat'.
Re: файловая система fuse для архива книг
Date: 2009-11-27 02:11 am (UTC)no subject
Date: 2009-11-27 02:42 am (UTC)no subject
Date: 2009-11-27 04:13 am (UTC)Re: Могу предложить Пургуру (с)
Date: 2009-11-27 04:16 am (UTC)no subject
Date: 2009-11-27 04:17 am (UTC)no subject
Date: 2009-11-27 04:19 am (UTC)Я пробовал работать таким образом с архивами альдебарана (которые на порядок меньше) и на десктопе, Пришел к выводу, что без БД тут никак.