protected Index writeIndexStructure(int[][] postings) throws Exception
{
String path = ApplicationSetup.TERRIER_INDEX_PATH;
String prefix = ApplicationSetup.TERRIER_INDEX_PREFIX;
Index index = Index.createNewIndex(path, prefix);
DirectInvertedDocidOnlyOuptutStream dios = new DirectInvertedDocidOnlyOuptutStream(path + '/'+ prefix + ".direct.bf");
//FSArrayFile<BitIndexPointer>
DocumentIndexBuilder dib = new DocumentIndexBuilder(index, "document");
BitIndexPointer p;
for(int[] list : postings)
{
final int doclen = StaTools.sum(list);
p = dios.writePostings(new ArrayOfIdsIterablePosting(list));
DocumentIndexEntry die = new BasicDocumentIndexEntry(doclen, p);
dib.addEntryToBuffer(die);
}
dios.close();
dib.finishedCollections();
index.addIndexStructure(
"direct",
"org.terrier.structures.DirectIndex",
"org.terrier.structures.Index,java.lang.String,java.lang.Class",
"index,structureName,"+ BasicIterablePostingDocidOnly.class.getName());
index.addIndexStructureInputStream(
"direct",
"org.terrier.structures.DirectIndexInputStream",
"org.terrier.structures.Index,java.lang.String,java.lang.Class",
"index,structureName,"+ BasicIterablePostingDocidOnly.class.getName());
index.setIndexProperty("index.direct.fields.count", ""+FieldScore.FIELDS_COUNT );
index.setIndexProperty("index.direct.fields.names", ArrayUtils.join(FieldScore.FIELD_NAMES, ","));
index.addIndexStructure("document-factory", BasicDocumentIndexEntry.Factory.class.getName(), "", "");
index.flush();
DocumentIndex di = index.getDocumentIndex();
assertNotNull(di);
assertEquals(postings.length, di.getNumberOfDocuments());
return index;
}