Во-первых, сама Lucene поддерживает версию каталогов в памяти:
Lucene.Net.Store.RAMDirectory
Вы можете использовать его как:
RAMDirectory idx = new RAMDirectory();
// Make an writer to create the index
IndexWriter writer =
new IndexWriter(idx, new StandardAnalyzer(), true);
Если это работает для вас, но использует слишком много оперативной памяти, напишите обертку и представьте ее как интерфейс или веб-сервис. Или, если вы просто хотите кешировать то, что вы запрашиваете, чтобы контролировать, когда сущности выпадают из кеша, вы можете написать обертку вокруг Lucene, которая кеширует наиболее распространенные для вас результаты на основе ключевых слов, очевидно.
Я предпочитаю вышеупомянутое. Создайте веб-сервис или сервисный проект, который оборачивается вокруг хранилища Lucene, используя RAMDirectory. Таким образом, вы можете разгрузить веб-сервис на другой сервер с большим количеством оперативной памяти, если индекс огромен - и дает почти мгновенные результаты.