Почему бы просто не создать правильно структурированное дерево объектов индекса в памяти, оптимизированное для поиска?
РЕДАКТИРОВАТЬ: Добавлено после некоторых комментариев ...
Может быть что-токак это:
class Index
{
public Dictionary<string, List<SourceFile>> FilesThatContainThisWord {get; set;}
...
}
class SourceFile
{
public string Path {get; set;}
...
}
// Code to look up a term
var filesThatContainMonday = myIndex.FilesThatContainThisWord["Monday"];