Working out the right level of abstraction over Lucene (as little as possible I think)