This functionality has been ported from Solr to Lucene just recently. Take a look at the FSTLookup class, introduced in Lucene 3.3.0. For an example on how to use it, see the associated test class.
A small snippet extracted from the test class to show you the basics:
private TermFreq[] evalKeys() {
final TermFreq[] keys = new TermFreq[] {
tf("one", 0.5f),
tf("oneness", 1),
tf("onerous", 1),
tf("onesimus", 1),
tf("two", 1),
tf("twofold", 1),
tf("twonk", 1),
tf("thrive", 1),
tf("through", 1),
tf("threat", 1),
tf("three", 1),
tf("foundation", 1),
tf("fourblah", 1),
tf("fourteen", 1),
tf("four", 0.5f),
tf("fourier", 0.5f),
tf("fourty", 0.5f),
tf("xo", 1),
};
return keys;
}
FSTLookup lookup = new FSTLookup();
lookup.build(new TermFreqArrayIterator(evalKeys()));
LookupResult result = lookup.lookup("one", false, 2);