/**
  * Loads an index if it is not already loaded.
  *
  * @param name - The name of the
  * @return
  * @throws IOException
  * @throws ConfigurationException
  */
 private IndexHelper loadIndex(String name) throws IOException, ConfigurationException {
   if (env.hasIndex(name)) {
     return env.getIndex(name);
   }
   info("loading index " + name);
   JSONObject indexConfig = configuration.getIndex(name);
   File parentDir = requireDirectory(configuration.getIndexes(), "outputDir");
   IndexHelper helper = new IndexHelper(new File(parentDir, name), true);
   if (indexConfig.containsKey("similarity")) {
     String sim = requireString(indexConfig, "similarity");
     if (sim.equals("ESA")) {
       helper.getSearcher().setSimilarity(new ESASimilarity.LuceneSimilarity());
     } else {
       throw new ConfigurationException("unknown similarity type: " + sim);
     }
   }
   if (indexConfig.containsKey("analyzer")) {
     String analyzer = requireString(indexConfig, "analyzer");
     if (analyzer.equals("ESA")) {
       helper.setAnalyzer(new ESAAnalyzer());
     } else {
       throw new ConfigurationException("unknown analyzer type: " + analyzer);
     }
   }
   env.addIndex(name, helper);
   return helper;
 }