public void writeBody(Result result, ResponseWriter resultWriter, long searchTime)
      throws ResultWriterException {
    String[] fieldNames = result.getFieldNameList();

    String thumbnailField = setting.getThumbnailField();
    String titleField = setting.getTitleField();
    String bodyField = setting.getBodyField();

    Set<String> thumbnailIdSet = findIdList(thumbnailField);
    Set<String> titleIdSet = findIdList(titleField);
    Set<String> bodyIdSet = findIdList(bodyField);

    resultWriter.key("result");
    // data
    Row[] rows = result.getData();

    if (rows.length == 0) {
      resultWriter.array("item").endArray();
    } else {
      resultWriter.array("item");
      for (int i = 0; i < rows.length; i++) {
        Row row = rows[i];

        resultWriter.object();

        /*
         * 1. title
         * */
        resultWriter.key("thumbnail");
        Iterator<String> iter = thumbnailIdSet.iterator();
        String thumbnailData = thumbnailField;
        while (iter.hasNext()) {
          String fieldId = iter.next();
          String fieldData = getFieldData(fieldId, row, fieldNames);
          thumbnailData = thumbnailData.replaceAll("\\$" + fieldId, fieldData);
        }
        resultWriter.value(thumbnailData);

        /*
         * 2. title
         * */
        resultWriter.key("title");
        iter = titleIdSet.iterator();
        String titleData = titleField;
        while (iter.hasNext()) {
          String fieldId = iter.next();
          String fieldData = getFieldData(fieldId, row, fieldNames);
          titleData = titleData.replaceAll("\\$" + fieldId, fieldData);
        }
        resultWriter.value(titleData);

        /*
         * 3. body
         * */
        String bodyData = bodyField;
        resultWriter.key("body");
        iter = bodyIdSet.iterator();
        while (iter.hasNext()) {
          String fieldId = iter.next();
          String fieldData = getFieldData(fieldId, row, fieldNames);
          bodyData = bodyData.replaceAll("\\$" + fieldId, fieldData);
        }
        resultWriter.value(bodyData);
        resultWriter.endObject();
      }
      resultWriter.endArray();

      //			GroupResults groupResult = result.getGroupResult();
      //
      //			new GroupResultWriter(null).writeBody(groupResult, resultWriter);

    }
  }