Hello! On Friday 05 February 2010 18:47:19 Serhiy Storchaka wrote: > > On Friday 05 February 2010 18:13:24 Serhiy Storchaka wrote: > >> Можно проверять дату последней модификации файла до вычисления хэша и > >> определения типа mime. Это значительно ускорит повторное сканирование. > > > > Проверка по mtime имхо совершенно ненадежна, предпочитаю по хэшу. > > Можно ещё размер проверять (всё равно хранится). Или, для параноиков, > idev:inode.
А вот это не годится. Данные могут быть перемещены на другой диск или даже на другой компьютер, это не повод их переиндексировать. > >> И разве в tcllib нет реализации md5, что дёргается внешний бинарник? > > > > Покамест tcllib не использую, ради md5 не хочется лишнюю зависимость > > тянуть. А так в моей сборке sqlite есть функция вычисления md5 для файла, > > но это не всем удобно будет. > > Ещё меня удивляет, зачем там утилиты на C. Ведь на том же тикле можно > записать проще и понятнее. Можно, только время запуска тиклевого интерпретатора на порядок больше. И если логика индексации достаточна сложная и требует времени, то поиск должен быть максимально ускорен. Раньше у меня в веб-портал была встроена работа с БД поискового индекса, а теперь использую вызов внешних утилит - на коре квадро порядка 1000 поисковых запросов в секунду отрабатывает, что значительно превышает мои потребности (насколько помню, у яху пиковая нагрузка несколько лет назад составляла около 15 000 запросов в секунду). Собственно, сейчас делаю вариант, где и листинг директорий шелловским скриптом генерируется. Накладные расходы выше, зато легко можно индексировать и архивы, причем как распаковывая их, так и монтируя через fusе и т.п. Потом можно оптимизировать, переписав требуемые скрипты на тикле и включая их в индексатор лишь единожды при запуске. Best regards, Alexey Pechnikov. http://pechnikov.tel/