Бинарный поиск по файлам работает только в том случае, если ваши файлы уже отсортированы по ключу поиска, который вы используете, а это означает, что файл X [n + 1] не должен иметь данных, лексикографически меньших, чем файл X [n]. В этом случае вам придется просматривать каждый файл вручную, пока вы не пройдете тщательный анализ всех файлов ... или не создадите файл словаря, например, такой:
'ae.txt', 'ac.txt', 'pi.txt', 'ad.txt', 'mm.txt', 'ab.txt'
durian 1
guava 0-5
mango 1
orange 2-5
papaya 0-5
Первая строка обозначает включенные файлы и дает им индексы посредством позиционирования (например, «ae.txt» находится в позиции 0). Другие строки обозначают индексы файлов, которые включают каждое слово.
Отсюда вы можете прочитать первую строку для имен файлов, выполнить двоичный поиск по строкам, чтобы найти слово, которое вы ищете (вам, вероятно, следует найти способ прочитать определенную строку в O (1), хотя - или поместите их в отдельные файлы словаря, например, для отдельных букв, если их слишком много). Затем определите, обозначен ли индекс имени файла (его расположение в первой строке) в строке слова.
Создание кода, который записывает исходный файл и обновляет его соответственно, кажется достаточно простым, но я могу помочь вам в этом, если вы захотите.