vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2017-01-22 05:58 pm

О больших архивах

Попробовал тут разгрести описанным в предыдущем посте скриптом архив либрусэка завалявшийся с 2009 года.

Получилось - из менее чем 200000 книг 2176 попросту not well-formed XML. В основном от того что народ использует знаки больше-меньше (даже не сдвоенные) в вместо кавычек-елочек, а какие-то распространенные тулзы генерации FB2 это не отслеживают и не заменяют встретившийся в тексте зна < на соответствующий entity. Аналогичные проблемы возникают с амперсэндами.

Ну и плюс к тому куча пробелов, неразрывных пробелов, кавычек, скобочек в полях "имя автора". В принципе можно скрипт пофиксить, чтобы все символы, не участвующие в сортировке по библиографическим правилам, резал.

Но вообще, конечно, все это добро нуждается в вычитки и чистке от артефактов сканирования и распознавания. Поэтому я и держу настолько маленькую библиотеку, что в ней мне все-таки не лень слазить и руками исправить ошибки в XML и метаданных.

А то и пройтись по всему тексту и правильно оформить тэгами разбиение на главы.
brmail: (Default)

[personal profile] brmail 2017-01-22 08:55 pm (UTC)(link)
бедненький сценарий поиска вы предложили. В реальности будет так: "помнится была книжка из серии фантастика или научная фантастика. Автора не помню. Вроде в названии было что-то про звезды. Как бы мне ее найти?" Все, у тебя после этого перебор 2-х миллионов файлов навсегда. И никакая иерархия твою файловую систему не спасет. И никакие гигабайты памяти. Собственно к памяти этот процесс поиска вообще не имеет отношения. Так как тормозить будет процесс перебора файлов, открытия их и чтения тегов из каждого.
Альтернатива одна - Строим индексы, кладем их в базу разница в скорости поиска будет не в разы, в десятки, если не сотни раз.
А как оно там хранится в самих архивах в принципе вообще все равно. По хорошему можно вообще все тексты в базу загнать чтобы дать пользователю и по тексту искать, но это уже напряг для базы - полнотекстовый поиск. Хотя все равно будет быстрее чем открывать пофайлово

[personal profile] anonim_legion 2017-01-22 09:41 pm (UTC)(link)
>напряг для базы - полнотекстовый поиск

Для специализированной базы - не напряг. Их уже уйму понаписали. Да и в постгресе полнотекстовый поиск хорошо работает, насколько я помню к движку БД что-то специализированно-поисковое прикрутили разработчики Авито.
brmail: (Default)

[personal profile] brmail 2017-01-23 07:16 am (UTC)(link)
нет, естественно оправдание собственному желанию продолжать трахаться и трахаться с открытым кодом доводя тупиковую идею до совершенства, а потом прикручивая к нему базу, так как все равно без нее работать не будет ... Не нужны никому стандартные средства работы, универсальные api и прочие базвордс. Пользователю нужна база от либрусека на 170+ Gb, готовый каталогизатор, и возможность скачать через год не новые 170 и все что набежало за год, а только добавку и индекс. И плевать пользователю что там ssl не свежая. И то что программа не обновляется часто - так же плевать ибо работает. Ну а тому кому шашечки, а не ехать - те велком в мир тех самых открытых стандартов итд по списку

[identity profile] tzirechnoy [lj.rossia.org] 2017-01-23 10:31 am (UTC)(link)
>напряг для базы - полнотекстовый поиск.

Если это один человек со средним современным десктопом наперевес и пол-тэрабайта текстов -- то не сказать чтобы и напряг.

[personal profile] legolegs 2017-01-23 07:43 am (UTC)(link)
>нескольких тысяч вариантов, но современные файловые системы с таким вполне справляются.

Они и с миллионами файлов в директории справляются. Только гуёвые файловые менеджеры плохо работают и ls тормозит. Конечно, это всё не про fat.