public List getRankingTrainData()

in core/src/main/java/org/apache/sdap/mudrod/weblog/structure/session/SessionTree.java [463:528]


  public List<RankingTrainData> getRankingTrainData(String indexName) throws UnsupportedEncodingException {

    List<RankingTrainData> trainDatas = new ArrayList<>();

    List<SessionNode> queryNodes = this.getQueryNodes(this.root);
    for (SessionNode querynode : queryNodes) {
      List<SessionNode> children = querynode.getChildren();

      LinkedHashMap<String, Boolean> datasetOpt = new LinkedHashMap<>();
      int ndownload = 0;
      for (SessionNode node : children) {
        if ("dataset".equals(node.getKey())) {
          Boolean bDownload = false;
          List<SessionNode> nodeChildren = node.getChildren();
          for (SessionNode aNodeChildren : nodeChildren) {
            if ("ftp".equals(aNodeChildren.getKey())) {
              bDownload = true;
              ndownload += 1;
              break;
            }
          }
          datasetOpt.put(node.datasetId, bDownload);
        }
      }

      // method 1: The priority of download data are higher
      if (datasetOpt.size() > 1 && ndownload > 0) {
        // query
        RequestUrl requestURL = new RequestUrl();
        String queryUrl = querynode.getRequest();
        String infoStr = requestURL.getSearchInfo(queryUrl);
        String query = null;
        try {
          query = es.customAnalyzing(props.getProperty(MudrodConstants.ES_INDEX_NAME), infoStr);
        } catch (InterruptedException | ExecutionException e) {
          if (e instanceof InterruptedException) {
            Thread.currentThread().interrupt();
          }
          throw new RuntimeException("Error performing custom analyzing", e);
        }
        Map<String, String> filter = RequestUrl.getFilterInfo(queryUrl);

        for (String datasetA : datasetOpt.keySet()) {
          Boolean bDownloadA = datasetOpt.get(datasetA);
          if (bDownloadA) {
            for (String datasetB : datasetOpt.keySet()) {
              Boolean bDownloadB = datasetOpt.get(datasetB);
              if (!bDownloadB) {

                String[] queries = query.split(",");
                for (String query1 : queries) {
                  RankingTrainData trainData = new RankingTrainData(query1, datasetA, datasetB);
                  trainData.setSessionId(this.sessionID);
                  trainData.setIndex(indexName);
                  trainData.setFilter(filter);
                  trainDatas.add(trainData);
                }
              }
            }
          }
        }
      }
    }

    return trainDatas;
  }