public synchronized void init(InputStream schema, InputStream data) { try { collector = new DataCollector(); parser = new SchemaParser(); queryMetadata = parser.parse(schema); fieldValues = collector.collectValues(data); for (String facet : queryMetadata.getFacetsPerType().get(FacetType.multi)) { collector.postProcessMultiValues(facet, fieldValues); } selectionGenerator = new SelectionGenerator(fieldValues, queryMetadata); } catch (Exception ex) { throw new RuntimeException(ex); } finally { IOUtils.closeQuietly(schema); IOUtils.closeQuietly(data); } }