MoreLikeThis no Lucene

Olá a todos,

estou estudando o Lucene e travei na parte de fazer buscas similares a um certo resultado.

Por exemplo, estou fazendo um sistema de controle de gastos, quando faço a busca pela descrição do gasto aparecem todos os resultados pertinentes à busca que eu fiz,
clicando em um dos resultados me são exibidos todos os detalhes daquele gasto, ai gostaria também que fossem exibidos alguns resultados similares aquele gasto.

Algo como o que é feito no EbaH, onde quando se vai fazer o download de um arquivo são exibidos os detalhes do arquivo e também arquivos com conteúdo relacionado a ele.
http://www.ebah.com.br/perfil-da-enfermagem-em-cti-pdf-a5143.html

Existe muito pouco (quase nenhum) material na internet a respeito do Lucene, os poucos exemplos/tutoriais que encontrei estavam com a mesma estrutura que eu estou utilizando, alguns setavam algumas propriedades no objeto do MoreLikeThis mas fazendo do mesmo jeito nada mudou, não encontrei nada que solucionasse meu problema.

Está acontecendo que o método like da classe MoreLikeThis está me retornando uma query vazia.

Segue o meu método:

public List buscaSimilares(Long id, Class<?> clazz, Map<String, Dao> daos) throws IOException, ParseException {
	
	List resultados = new ArrayList();
	
        //writer é um IndexWriter injetado atravéz de um Interceptor (VRaptor)
	IndexSearcher is = new IndexSearcher(writer.getDirectory());
	
	MoreLikeThis mlt = new MoreLikeThis(is.getIndexReader());
	
	mlt.setFieldNames(new String[] {
			"gasto.detalhes", "pufe.descricao"});
	
	Query query = mlt.like(buscaPorId(id, clazz, is));
	
	System.out.println("Query: " + query);
	
	ScoreDoc[] docs = is.search(query, 99).scoreDocs;
	
	System.out.println(docs.length);
	
	for (int i = 0; i < docs.length; i++) {
		
		int docId = docs[i].doc;
		Document doc = is.doc(docId);
		List fields = doc.getFields();
		
		for (int j = 0; j < fields.size(); j++) {
			Field f = (Field) fields.get(j);
			Dao dao = daos.get(f.name());
			resultados.add(dao.busca(Long.parseLong(doc.get(f.name()))));
		}
		
	}
	
	return resultados;
	
}

private int buscaPorId(Long id, Class<?> clazz, IndexSearcher is) throws ParseException, IOException {
	
	String nome = clazz.getSimpleName().toLowerCase().concat(".id");
	Query query = new QueryParser(nome, writer.getAnalyzer()).parse(id + "");
	TopDocs topDocs = is.search(query, null, 99);
	ScoreDoc[] docs = topDocs.scoreDocs;
	
	if (docs.length != 1) {
		System.out.println("Alguma coisa deu errada");
	} else {
		return docs[0].doc;
	}
	
	return 0;
	
}

O método buscaPorId está me retornando o valor certo, já fiz as devidas verificações.

O código não está muito bonito mais a prioridade por enquanto é fazer que funcione, ai sim iria otimiza-lo.

Alguém teria alguma sugestão de o que eu possa estar fazendo errado?

Obrigado
[]'s