public double computeDCG(String query, int point) {
		double dcg = 1.0;
		// HashMap<Integer, Double> qr = judgments.get(query);

		// System.out.println("qr.size " + qr.size());
		// for (Map.Entry<Integer, Double> entry : qr.entrySet()){
		// System.out.println("Key = " + entry.getKey() + "," +
		// " Value = " + entry.getValue());
		// }

		if (point == 1) {
			// idealDcg = qrSorted.get(0);
			for (Vector<String> queryDid : data) {
				if (judgments.containsKey(queryDid.get(0))) {
					dcg = judgments.get(queryDid.get(0))
							.getScoredRelevanceForDoc(
									Integer.parseInt(queryDid.get(1)));
				}
				break;
			}

		} else {
			for (Vector<String> queryDid : data) {
				if (judgments.containsKey(queryDid.get(0))) {
					dcg = judgments.get(queryDid.get(0))
							.getScoredRelevanceForDoc(
									Integer.parseInt(queryDid.get(1)));
				}
				break;
			}

			int count = 0;
			for (Vector<String> queryDid : data) {
				count++;
				if (count == 1) {
					continue;
				} else if (count > point) {
					break;
				} else {
					if (judgments.containsKey(queryDid.get(0))) {
						dcg += judgments.get(queryDid.get(0))
								.getScoredRelevanceForDoc(
										Integer.parseInt(queryDid.get(1)))
								/ Math.log(count) / Math.log(2d);
					} else {
						dcg += (1.0d / Math.log(count)) / Math.log(2d);

					}
				}
			}
		}

		// System.out.println("dcg = " + dcg);
		return dcg;
	}