У меня проблема с тем, что мой текущий алгоритм использует простой алгоритм линейного поиска для извлечения данных из нескольких файлов данных через соответствующие строки.
Это что-то вроде этого (псевдокод):
while count < total number of files
open current file
extract line from this file
build an arrayofStrings from this line
foreach string in arrayofStrings
foreach file in arrayofDataReferenceFiles
search in these files
close file
increment count
Для большой реальной работы процесс может занять около 6 часов.
В основном у меня есть большой набор строк, который использует программу для поиска по тому же набору файлов (например, 10 в 1 экземпляре и может быть 3 в следующем случае, когда программа запускается). Поскольку файлы справочных данных могут изменяться, я не думаю, что было бы разумно создавать постоянный индекс этих файлов.
Я в значительной степени новичок и не знаю каких-либо более быстрых методов для несортированных данных.
Я думал, так как поиск через некоторое время становится повторяющимся, возможно ли предварительно создать индекс местоположений определенных строк в ссылочных файлах данных без использования каких-либо внешних библиотек perl, как только массив файлов будет создан (файлы известны)? Этот скрипт будет перенесен на сервер, на котором, вероятно, установлен только стандартный Perl.
Я подумал, что, возможно, стоит потратить 3-5 минут на создание своего рода индекса для поиска перед обработкой задания.
Существует ли конкретная концепция индексации / поиска, которая применима к моей ситуации?
Спасибо всем!