Я бы придерживался сервис-ориентированной архитектуры (особенно если продукт должен обрабатывать большие объемы) и пошел бы с Solr. Тем не менее, 39 МБ - это не слишком большая память, если речь идет о синглтоне. С индексами и всем этим до чего дойдут? 400MB? Это, конечно, зависит от того, что делает ваш продукт и на каком оборудовании вы хотите его запустить.
Я хотел бы пойти с Solr или написать свой собственный сервис, который считывает файл в быструю БД, такую как таблица MyISAM MySQL (или даже таблица в памяти), и использовать функцию текстового поиска mysql для отображения результатов. За исключением того, что я бы попытался использовать Solr в качестве службы.
Преимущество написания моего собственного сервиса состоит в том, что я знаю, что происходит, недостатком является то, что он не будет таким мощным, как Solr. Тем не менее, я подозреваю, что создание собственного сервиса займет меньше времени.
Подумайте о создании собственной службы, которая обрабатывает запрос в асинхронном режиме (если ваш продукт - веб-сайт, то с использованием ajax). Проблема с Solr или Lucene заключается в том, что если вы застряли, там не так много помощи.
Только мои 2 цента.