public void digest(DataHandler handler) throws IOException {
int numcars=getMaxDocs();
Random rand=new Random();
IndexReader reader=null;
try{
reader=IndexReader.open(FSDirectory.open(getDataFile()),true);
int carcount=reader.maxDoc();
Document[] docCache=new Document[carcount];
for (int i=0;i<carcount;++i){
docCache[i]=reader.document(i);
}
for (int i=0;i<numcars;++i){
if (i!=0 && i%1000==0){
System.out.println(i+" cars indexed.");
}
Document doc=new Document();
int n=rand.nextInt(10);
if (n==0){
makeCar(doc,cars[rand.nextInt(cars.length)]);
}
else{
Document srcDoc=docCache[rand.nextInt(carcount)];
makeCar(doc,srcDoc);
}
populateDocument(doc,null);
handler.handleDocument(doc);
}
}
finally{
if (reader!=null){
reader.close();
}
}
}