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/

Ответить