The simplest query (say, for the word "recent") over the existing 'index' looks like this
var x = from wf in catalog.WordFilesDigging deeper into the HashSet introduced in .NET 3.5, boolean search queries (which took ages to discuss & code in Searcharoo 2) can be easily described in Linq
where wf.Text == "recent"
select wf;

so that a simple method call

will produce the these results (Console Apps - the easiest way to play with any new tech :)

Of course there's little indication of well it performs, or how it will work in the code itself (no query tree parser yet, so some work still to do)... maybe i4o - Indexed LINQ will come in handy, or at least provide some ideas for proper Searcharoo-backed Linq classes.
EDIT 30-Apr: It seems possible to play with the underlying structure of LINQ in .NET 2.0, although there's a bit more work to do exploring how robust the implementation is and how good the 3rd party (Hash)Set class is.