Re: Продолжение
Hello!
Итак, сделал поддержку архивов (пока скрипт только для zip
написал, но добавить прочие несложно), все обработчики
реализованы раздельными шелл-скриптами (без башизмов!),
большинство depends перемещены в recommends, а в обработчиках
сделана функция самотестирования (при запуске индексатора
можно проверить, кто из скриптов не может работать из-за
неудовлетворенных зависимостей и далее их игнорировать).
Основной движок сделан полностью на dash, а на тикле только
обертка для пакетной индексации. Перешел на тикль 8.6, т.к.
в нем есть полузакрытые сокеты (бэкпорт у меня в репозитории
есть, зависимостей не тянет). Где возможно, используется exec.
Все скрипты весьма простые и компактные.
Разделил пакет на
sqlite3-poisk-core - парсеры документов, создание БД (на dash)
sqlite3-poisk-dev - сейчас содержит единственную утилиту,
разбирающую системный mime.types (или любой другой файл в том
же формате) и создающий симлинки расширение -> обработчик
(тикль 8.6)
sqlite3-poisk-client - клиентские утилиты (на С)
sqlite3-poisk-server - пакетный сканер (тикль 8.6)
Первые два пакета выложены, в остальные пока вношу некоторые
изменения.
Добавлено автораспознавание кодировок plain text и конвертация
их в uft-8 при сохранении в БД. В производительности теряем, но
считаю это необходимым из-за зоопарка распространенных
кодировок.
Некоторые тесты нового варианта:
1. Отправлено на индексацию файлов
find /tmp/* | wc -l
3488
2. Суммарный размер файлов
$ du -sh /tmp
327M /tmp
3. Время индексации
$ time find /tmp/* | POISK_DB=DB ./poisk-add-file.tcl
real 1m52.476s
user 0m51.507s
sys 0m53.091s
4. Всего проиндексировано файлов
$ sqlite3 DB "select count(*) from file"
3544
Кол-во файлов в пункте 4 превышает их число в пункте 1, т.к.
были обработаны архивы, содержащие набор файлов.
Примечание: имя базы теперь читается из переменной окружения
POISK_DB, так во многих случаях удобнее, нежели для всех утилит
указывать аргументом.
==========================================
Вопрос к сообществу: кто подскажет способ преобразовать в
форматированный текст форматы fb2, epub? Парсер должен брать
ввод на stdin и выдавать на stdout, без временных файлов. Сейчас
обрабатываю как xml, с помощью sed заменяя амперсанд (кривой
xml в fb2 - вместо & в нем фигачат просто &).
Кто поделится библиотекой либрусек в разных форматах? Думаю,
электронные библиотеки - первый кандидат на тестирование. У меня
несколько сот книжек с либрусека было скачано, пока его не прикрыли,
их индексацию проверил, в zip-архиве и просто файлами.
Best regards, Alexey Pechnikov.
http://pechnikov.tel/
Reply to: