public void close() throws IRException {
   try {
     br.close();
   } catch (IOException e) {
     throw new IRException(e);
   }
 }
  //	int limit = 0;
  public boolean hasNext() throws IRException {
    //		if(limit++ >= 1200000)
    //			return false;

    int size = fieldSettingList.size();
    String key = null;
    String value = null;
    String line = null;
    document = new Document(size);
    count = 0;
    while (count < size) {
      try {
        FieldSetting fs = fieldSettingList.get(count);
        line = br.readLine();
        //				logger.debug("line = "+line);
        if (line == null) return false;
        // if(line.startsWith(DBReader.BACKUP_HEADER) || line.startsWith("insert_fastcat_id_")){
        if (line.startsWith("insert_fastcat_id_")) {
          continue;
        }
        if (line.length() == 0) {
          continue;
        }
        int p = line.indexOf(":");
        if (p > 0) {
          key = line.substring(0, p);
          value = line.substring(p + 1);
        }

        if (key.equalsIgnoreCase(fs.name)) {
          document.set(count, fs.createField(value));
          count++;
        } else {
          logger.warn(
              "skip! "
                  + key
                  + "("
                  + fs.name
                  + ")count="
                  + key.equalsIgnoreCase(fs.name)
                  + ", fs.name="
                  + fs.name
                  + ", value="
                  + value);
        }

      } catch (IOException e) {
        logger.error(e.getMessage(), e);
      }
    }

    return true;
  }