Я полностью согласен с @HighTechRider, денормализация данных (взрывающаяся, как вы ее выразили) кажется обязательной в данном случае для производительных запросов, если объем данных настолько велик, насколько вы предполагаете, иначе не имеет значения, какой продукт вы выберите, что в конечном итоге это будет какой-то способ сканирования свободного текста.
@ chx предложение Сфинкса кажется правдоподобным, по крайней мере, в ускорении последнего. Но для этого маршрута есть скрытые издержки - вам нужно связывать, устанавливать, управлять, исправлять, обновлять и т. Д. Чужую службу вместе с вашим программным обеспечением.
Минимизация потребления ресурсов рабочего стола при индексации и запросах должна быть высоким приоритетом, и настройка сервера свободного текста на рабочем столе кажется чем-то противоречащим этому уставу.
Я бы начал с любой базовой файловой системы - с использованием объектов файловой системы для представления ваших денормализованных данных. Или, если представление и выполнение ваших запросов кажется слишком сложным, посмотрите на простые библиотеки встроенных таблиц, такие как SQLite или SQL Compact edition, прежде чем пытаться использовать более экзотические продукты, ориентированные на сервер, на рабочий стол.
Отличное сравнение SQLite и SQL Compact Edition здесь:
http://www.tech -archive.net / Архив / DotNet / microsoft.public.dotnet.framework.compactframework / 2005-12 / msg00019.html
SQLite также может создавать произвольные текстовые индексы, которые будут охватывать некоторые из ваших сценариев "неизвестного поля" в будущем.
Что касается карты-сокращения, то ее стратегия действительна для домена, к которому вы приближаетесь.