Стоит рассмотреть топ c на двух уровнях: подход и c программное обеспечение для использования.
Подход : Исходя из того, как вы описываете данные, похоже, что предварительное индексирование окажет существенную помощь. Предварительное индексирование выполнит однократное сканирование данных и построит компактный индекс, который позволит выполнять быстрый поиск и определять, где c терминов отображаются в репозитории.
В зависимости от запросов, это позволит уменьшить или полностью исключить необходимость поиска в реальном документе даже для сложных запросов, таких как «найти все документы, в которых AAA и BBB встречаются вместе».
Specifi c Tool
Аппаратное обеспечение, которое вы описываете, относительно базовое c. Выполнение сложных поисков выиграет от большого объема памяти / многоядерного оборудования. Существуют отличные решения - elasti c search, solr и аналогичные инструменты могут выполнять magi c при наличии мощного оборудования для их поддержки.
Я считаю, что вы хотите рассмотреть два варианта, в зависимости от вашего навыки, и данные (это поможет образец данных может быть разделен) OP. * Создайте собственный индекс, используя облегченную базу данных (sqlite, postgresql), ИЛИ * Используйте облегченную поисковую систему.
Для второго подхода, используя описываемое оборудование, я бы рекомендовал изучить 'glimpse '(и вспомогательная утилита согласования). Glimple предоставляет способ предварительной индексации данных, что делает поиск чрезвычайно быстрым. Я использовал его в хранилище больших данных (несколько ГБ, но не ТБ).
См .: https://github.com/gvelez17/glimpse
* 1023 Elasti c Поиск, но настроить намного проще. Это без сервера. Основным преимуществом варианта использования, описанного OP, является возможность сканировать существующие файлы без необходимости загружать документы в дополнительный репозиторий поисковой системы.