DocumentIndex documentIndex = index.getDocumentIndex();
/**
* Test {@link IterablePosting} entries from a {@link DirectIndex}
*/
DirectIndex directIndex = index.getDirectIndex();
assertNotNull(directIndex);
// for each document
for (int d = 0; d < dirTfs.length; d++) {
DocumentIndexEntry de = documentIndex.getDocumentEntry(d);
assertNotNull(de);
ip = directIndex.getPostings((BitIndexPointer) de);
FieldPosting fp = fieldsExpected ? (FieldPosting)ip : null;
// for each term
int t = 0;
int countFoundTerms = 0;
while (ip.next() != IterablePosting.EOL) {
int termid = ip.getId();
assertTrue(termid >= 0);
String term = lexicon.getLexiconEntry(termid).getKey();
assertNotNull(term);
countFoundTerms++;
assertTrue(dirTfs[d].containsKey(term));
assertEquals(dirTfs[d].get(term), ip.getFrequency());
assertEquals(doclens[d], ip.getDocumentLength());
if (fieldsExpected) {
assertEquals(2, fp.getFieldFrequencies().length);
for (int f = 0; f < 2; f++) {
assertEquals(dirFfs[d].get(term)[f], fp.getFieldFrequencies()[f]);
}
}
t++;
}
assertEquals(dirTfs[d].size() ,countFoundTerms);
ip.close();
}
// post-check
assertEquals(IterablePosting.EOL, ip.next());
/**
* Test {@link IterablePosting} entries from a {@link DirectIndexInputStream}
*/
bpiis = (BitPostingIndexInputStream) index.getIndexStructureInputStream("direct");
assertNotNull(bpiis);
// for each document
for (int d = 0; d < dirTfs.length; d++) {
assertTrue(bpiis.hasNext());
ip = bpiis.next();
assertNotNull(ip);
FieldPosting fp = fieldsExpected ? (FieldPosting)ip : null;
// for each term
int t = 0;
int countFoundTerms = 0;
while (ip.next() != IterablePosting.EOL) {
int termid = ip.getId();
assertTrue(termid >= 0);
String term = lexicon.getLexiconEntry(termid).getKey();
assertNotNull(term);
countFoundTerms++;
assertTrue(dirTfs[d].containsKey(term));
assertEquals(dirTfs[d].get(term), ip.getFrequency());
assertEquals(doclens[d], ip.getDocumentLength());
if (fieldsExpected) {
assertEquals(2, fp.getFieldFrequencies().length);
for (int f = 0; f < 2; f++) {
assertEquals(dirFfs[d].get(term)[f], fp.getFieldFrequencies()[f]);
}
}
t++;
}
assertEquals(dirTfs[d].size() ,countFoundTerms);
}
// post-check
assertFalse(bpiis.hasNext());
/**
* Test posting array entries from a {@link DirectIndex}
*/
// for each document
for (int d = 0; d < dirTfs.length; d++) {
DocumentIndexEntry de = documentIndex.getDocumentEntry(d);
assertNotNull(de);
int[][] terms = directIndex.getTerms(de);
if (!fieldsExpected) {
assertTrue(terms.length >= 2);
}
else {