Исходя из того, что это PHP и, скорее всего, на каждый http-запрос наверняка вы будете заново перезапускать ваш скрипт - каждый раз загружать данные и их индексировать не целесообразно.
Значит, вам нужны индексы на диски уже готовые.
Либо, если ресурсы (хорошие) и нагрузка (невысокая) позволяет - да, можно при каждом запросе
читать этот самый весь файл построчно на предмет поиска совпадения.
но попадаются нерабочие ответы 2009-2011 годов.
Все эти вещи придуманы и написаны еще в 1970-е годы....
Зачем вам свежие ответы?
Можно взять за основу BerkleyDB, SQLite, LevelDB и пр. и пр.
Но это и будет СУБД,
пусть даже оформленная в виде библиотеки.
Ну или вы сами напишите - и это все равно будет хоть примитивная, но СУБД.