SenseiHit[] result = new SenseiHit[hitsArrayLength];
for (int i = 0; i < hitsArrayLength; i++) {
JSONObject hitObj = (JSONObject)hitsArray.get(i);
SenseiHit hit = new SenseiHit();
Iterator keys = hitObj.keys();
Map<String,String[]> fieldMap = null;
Map<String,Object[]> rawFieldMap = null;
while(keys.hasNext()){
String key = (String)keys.next();
if (SenseiSearchServletParams.PARAM_RESULT_HIT_UID.equals(key)){
hit.setUID(Long.parseLong(hitObj.getString(SenseiSearchServletParams.PARAM_RESULT_HIT_UID)));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_DOCID.equals(key)){
hit.setDocid(hitObj.getInt(SenseiSearchServletParams.PARAM_RESULT_HIT_DOCID));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_SCORE.equals(key)){
hit.setScore((float) hitObj.getDouble(SenseiSearchServletParams.PARAM_RESULT_HIT_SCORE));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_SRC_DATA.equals(key)){
hit.setSrcData(hitObj.getString(SenseiSearchServletParams.PARAM_RESULT_HIT_SRC_DATA));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_STORED_FIELDS.equals(key)){
hit.setStoredFields(convertStoredFields(hitObj.optJSONArray(SenseiSearchServletParams.PARAM_RESULT_HIT_STORED_FIELDS)));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPFIELD.equals(key)){
hit.setGroupValue(hitObj.getString(SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPFIELD));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPVALUE.equals(key)){
hit.setGroupValue(hitObj.getString(SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPVALUE));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPHITSCOUNT.equals(key)){
hit.setGroupHitsCount(hitObj.getInt(SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPHITSCOUNT));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_EXPLANATION.equals(key)){
hit.setExplanation(convertToExplanation(hitObj.optJSONObject(SenseiSearchServletParams.PARAM_RESULT_HIT_EXPLANATION)));
}
else if (SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPHITS.equals(key)) {
hit.setGroupHits(convertHitsArray(hitObj.getJSONArray(SenseiSearchServletParams.PARAM_RESULT_HIT_GROUPHITS)));
}
else {
JSONArray array = hitObj.optJSONArray(key);
if (array!=null) {
String [] arr = new String[array.length()];
Object [] rawArr = new Object[array.length()];
for (int k=0;k<arr.length;++k){
arr[k]=array.getString(k);
rawArr[k] = array.get(k);
}
if(fieldMap == null) {
fieldMap = new HashMap<String, String[]>();
}
if(rawFieldMap == null) {
rawFieldMap = new HashMap<String, Object[]>();
}
fieldMap.put(key, arr);
rawFieldMap.put(key, rawArr);
}
}
}
hit.setFieldValues(fieldMap);
hit.setRawFieldValues(rawFieldMap);
result[i] = hit;
}
return result;