Это зависит от среды, в которой вы хотите его запустить, и от того, сколько запросов вы ожидаете в секунду.
Самый быстрый способ - сохранить каждое слово из хеш-таблицы в памяти, а значения содержат ссылку на главы / стихи, или как вы их называете, вы хотите получить.
Но это может плохо масштабироваться, если книга очень большая или клиент очень худой.
Вы можете хранить каждый стих в записи базы данных и осуществлять поиск с помощью полнотекстового поиска. Но если вам нужно разместить приложение на веб-сайте, вам нужно убедиться, что стоимость размещения базы данных по вашему выбору не превышает ваш бюджет.
Если загрузка вашего приложения может справиться с этим, вы также можете сохранить каждый стих в текстовом файле (простой текст, XML или любой другой формат) и сканировать каждый файл, предпочтительно с помощью XPATH или регулярного выражения. Очень дешевое и простое решение, которое вы можете сделать как можно более продвинутым, но, возможно, медленнее. Опять же, если вам нужно обслуживать только 1 запрос в час, почему бы и нет?
Я бы использовал базу данных с полнотекстовым поиском, поскольку это лучше всего масштабирует.