Все зависит от эффективного количества текстовых и / или веб-страниц, которые вы собираетесь сканировать. Общее решение, вероятно, для
- использовать СУБД (своего рода SQL-сервер) для хранения метаданных, связанных со страницами.
Такая информация будет храниться в простой таблице (возможно, с очень небольшим количеством таблиц поддержки / связанных таблиц), содержащей такие поля, как Url, FileName (где вы будете ее сохранять), Offset в файле, где хранится (идея состоит в том, чтобы сохранить несколько страниц в том же файле) дата сканирования, размер и несколько других полей.
- используйте собственное хранилище файлов для правильного текста.
Имя файла и путь не имеют большого значения (то есть путь может быть поверхностным, а имя загадочным / автоматически сгенерированным). Это имя / путь хранится в метаданных. Несколько просканированных страниц хранятся в одном плоском файле, чтобы оптимизировать нагрузку в ОС на управление слишком большим количеством файлов. Сам текст может быть сжат (ZIP и т. Д.) Отдельно для каждой страницы (при сжатии больших кусков требуется небольшой дополнительный коэффициент сжатия), что позволяет обрабатывать файлы (не нужно распаковывать весь текст перед этим! ). Решение об использовании сжатия зависит от различных факторов; накладные расходы на сжатие / распаковку, как правило, относительно минимальны с точки зрения использования процессора и обеспечивают хорошую экономию пространства на жестком диске и, как правило, производительность дискового ввода-вывода.
Преимущество этого подхода состоит в том, что СУБД остается небольшой, но доступна для запросов, управляемых SQL (специального или запрограммированного характера), для поиска по различным критериям. Как правило, небольшой выигрыш (и много головной боли) связан с хранением большого количества больших файлов на самом сервере SQL. Кроме того, по мере обработки / анализа каждой страницы в базу данных могут быть добавлены дополнительные метаданные (например, название, язык, наиболее повторяющиеся 5 слов и т. Д.).