public ConfigContext(
     SearchConfiguration searchConfiguration,
     BuildContext buildContext,
     SearchMapping searchMapping) {
   this.serviceManager = buildContext.getServiceManager();
   this.luceneMatchVersion = getLuceneMatchVersion(searchConfiguration);
   this.defaultLuceneAnalyzerReference = initDefaultLuceneAnalyzerReference(searchConfiguration);
   this.jpaPresent = isPresent("javax.persistence.Id");
   this.nullToken = initNullToken(searchConfiguration);
   this.implicitProvidedId = searchConfiguration.isIdProvidedImplicit();
   this.searchMapping = searchMapping;
 }
    @Override
    protected Set<String> loadInitialShardNames(Properties properties, BuildContext buildContext) {
      ServiceManager serviceManager = buildContext.getServiceManager();
      SessionFactory sessionFactory =
          serviceManager.requestService(HibernateSessionFactoryService.class).getSessionFactory();
      Session session = sessionFactory.openSession();
      try {
        Criteria initialShardsCriteria = session.createCriteria(Animal.class);
        initialShardsCriteria.setProjection(Projections.distinct(Property.forName("type")));

        @SuppressWarnings("unchecked")
        List<String> initialTypes = initialShardsCriteria.list();
        return new HashSet<String>(initialTypes);
      } finally {
        session.close();
      }
    }