private Document extractDocument(int index) throws IOException { if ( allowFieldSelection ) { if ( fieldLoadingVisitor == null ) { //we need no fields return null; } else { queryHits.visitDocument( index, fieldLoadingVisitor ); return fieldLoadingVisitor.getDocumentAndReset(); } } else { return queryHits.doc( index ); } }
private Document extractDocument(int index) throws IOException { if ( allowFieldSelection ) { if ( fieldLoadingVisitor == null ) { //we need no fields return null; } else { queryHits.visitDocument( index, fieldLoadingVisitor ); return fieldLoadingVisitor.getDocumentAndReset(); } } else { return queryHits.doc( index ); } }
@Test public void testEagerStop() throws IOException { HashSet<String> acceptedFieldNames = new HashSet<>(); acceptedFieldNames.add( "field one" ); acceptedFieldNames.add( "field two" ); ReusableDocumentStoredFieldVisitor fieldVisitor = new ReusableDocumentStoredFieldVisitor( acceptedFieldNames ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field one" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field one" ) ) ); consumeField( fieldVisitor ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field two" ) ) ); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field three" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field two" ) ) ); consumeField( fieldVisitor ); Assert.assertEquals( Status.STOP, fieldVisitor.needsField( forgeFieldInfo( "made up field four" ) ) ); //Fetch Document, prepare for processing next one: fieldVisitor.getDocumentAndReset(); Assert.assertEquals( Status.NO, fieldVisitor.needsField( forgeFieldInfo( "made up field one" ) ) ); Assert.assertEquals( Status.YES, fieldVisitor.needsField( forgeFieldInfo( "field one" ) ) ); }