@Override public void binaryField(FieldInfo fieldInfo, byte[] value) throws IOException { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@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" ) ) ); }
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 ); } }
this.fieldLoadingVisitor = new ReusableDocumentStoredFieldVisitor( fields );
/** * Verifies the FieldSelector being used contains the listed field names (and no more). * Note that DocumentBuilder.CLASS_FIELDNAME is always used. * @param expectedFieldNames * @throws IOException */ public static void assertFieldSelectorEnabled(String... expectedFieldNames) throws IOException { if ( expectedFieldNames == null || expectedFieldNames.length == 0 ) { assertFieldSelectorDisabled(); } else { assertNotNull( FieldSelectorLeakingReaderProvider.fieldSelector ); assertTrue( fieldSelector instanceof ReusableDocumentStoredFieldVisitor ); ReusableDocumentStoredFieldVisitor visitor = (ReusableDocumentStoredFieldVisitor) fieldSelector; assertEquals( expectedFieldNames.length, visitor.countAcceptedFields() ); for ( String fieldName : expectedFieldNames ) { FieldInfo fieldId = forgeFieldInfo( fieldName ); assertEquals( Status.YES, visitor.needsField( fieldId ) ); } } }
private void consumeField(ReusableDocumentStoredFieldVisitor fieldVisitor) throws IOException { fieldVisitor.stringField( forgeFieldInfo( "anything" ), "anything".getBytes( StandardCharsets.UTF_8 ) ); }
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 ); } }
this.fieldLoadingVisitor = new ReusableDocumentStoredFieldVisitor( fields );
@Override public void doubleField(FieldInfo fieldInfo, double value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void doubleField(FieldInfo fieldInfo, double value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void intField(FieldInfo fieldInfo, int value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void floatField(FieldInfo fieldInfo, float value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void binaryField(FieldInfo fieldInfo, byte[] value) throws IOException { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void intField(FieldInfo fieldInfo, int value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void longField(FieldInfo fieldInfo, long value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void floatField(FieldInfo fieldInfo, float value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void longField(FieldInfo fieldInfo, long value) { getDocument().add( new StoredField( fieldInfo.name, value ) ); }
@Override public void stringField(FieldInfo fieldInfo, byte[] value) throws IOException { final FieldType ft = new FieldType( TextField.TYPE_STORED ); ft.setStoreTermVectors( fieldInfo.hasVectors() ); ft.setOmitNorms( fieldInfo.omitsNorms() ); ft.setIndexOptions( fieldInfo.getIndexOptions() ); getDocument().add( new Field( fieldInfo.name, new String( value, StandardCharsets.UTF_8 ), ft ) ); }
@Override public void stringField(FieldInfo fieldInfo, byte[] value) throws IOException { final FieldType ft = new FieldType( TextField.TYPE_STORED ); ft.setStoreTermVectors( fieldInfo.hasVectors() ); ft.setOmitNorms( fieldInfo.omitsNorms() ); ft.setIndexOptions( fieldInfo.getIndexOptions() ); getDocument().add( new Field( fieldInfo.name, new String( value, StandardCharsets.UTF_8 ), ft ) ); }