/**
   * Method for calculating the Vector representation of the query using different schemes.
   *
   * @param cnt : counter indicating the query number
   */
  public void computeQueryVector(int cnt) {
    int collectionSize = 0, queryLenSum = 0, querySize = 0, queryLen = 0;
    double queryAverage = 0;

    // ArrayList<Double>W1Vector=new ArrayList<>();
    // ArrayList<Double>W2Vector=new ArrayList<>();

    /* Calculating the total query size */
    collectionSize = queryMap.size();

    /* Calculating average Query Length */
    queryAverage = computeAverageQueryLength(collectionSize);

    TreeMap<String, Integer> currentQueryMap = queryMap.get(cnt);

    /* Calculating query length */
    for (int len : currentQueryMap.values()) {
      queryLen += len;
    }

    for (String term : currentQueryMap.keySet()) {
      int qTF = currentQueryMap.get(term);
      int qMaxTF = computeQueryMaxTF(currentQueryMap);
      int qDF = computeQueryDF(term);
      double W1 = computeVectorByW1(qTF, qMaxTF, qDF, collectionSize);
      double W2 = computeVectorByW2(qTF, queryLen, queryAverage, qDF, collectionSize);
      populateW1QueryVector(term, W1, cnt);
      populateW2QueryVector(term, W2, cnt);
    }

    /*
     * for (QueryWrapper qwrapper : queryMap.values()) { queryLenSum =
     * queryLenSum + qwrapper.queryLength; }
     */

    /* Calculating the average query length */
    // queryAverage = (queryLenSum / collectionSize);

    /*
     * QueryWrapper qwrap = queryMap.get(cnt);
     *
     * for(String qTerm : qwrap.perQueryTFMap.keySet()) { IndexWrapper
     * iwrapper = indexMap.get(qTerm); if (iwrapper != null) { int DF =
     * iwrapper.documentFrequency; int TF = qwrap.perQueryTFMap.get(qTerm);
     * int maxTF = qwrap.queryMaxTf; int queryLen = qwrap.queryLength;
     * double W1 = computeVectorByW1(TF, maxTF, DF, collectionSize); double
     * W2 = computeVectorByW2(TF,queryLen, queryAverage, DF,
     * collectionSize); W1Vector.add(W1); W2Vector.add(W2);
     * W1QueryVectorMap.put(cnt,W1Vector);
     * W2QueryVectorMap.put(cnt,W2Vector); } }
     *
     * System.out.println("\nQuery : " + cnt); for(Entry<Integer,
     * ArrayList<Double>> entry:W1QueryVectorMap.entrySet()){
     * System.out.println(entry.getValue()); }
     */

    System.out.println("\nQuery:" + cnt);
    for (Entry<Integer, HashMap<String, Double>> entry : W1QueryVectorMap.entrySet()) {
      HashMap<String, Double> currentMap = entry.getValue();
      for (Entry<String, Double> currEntry : currentMap.entrySet()) {
        System.out.println("[" + currEntry.getValue() + "]");
      }
    }
  }