public void temporalSimilarity()

in core/src/main/java/org/apache/sdap/mudrod/recommendation/structure/PODAACMetadataFeature.java [244:285]


  public void temporalSimilarity(Map<String, Object> metadataA, Map<String, Object> metadataB, XContentBuilder contentBuilder) {
    // TODO Auto-generated method stub
    double similarity = 0.0;
    double startTimeA = Double.parseDouble((String) metadataA.get("Dataset-DatasetCoverage-StartTimeLong"));
    String endTimeAStr = (String) metadataA.get("Dataset-DatasetCoverage-StopTimeLong");
    double endTimeA = 0.0;
    if ("".equals(endTimeAStr)) {
      endTimeA = System.currentTimeMillis();
    } else {
      endTimeA = Double.parseDouble(endTimeAStr);
    }
    double timespanA = endTimeA - startTimeA;

    double startTimeB = Double.parseDouble((String) metadataB.get("Dataset-DatasetCoverage-StartTimeLong"));
    String endTimeBStr = (String) metadataB.get("Dataset-DatasetCoverage-StopTimeLong");
    double endTimeB = 0.0;
    if ("".equals(endTimeBStr)) {
      endTimeB = System.currentTimeMillis();
    } else {
      endTimeB = Double.parseDouble(endTimeBStr);
    }
    double timespanB = endTimeB - startTimeB;

    double intersect = 0.0;
    if (startTimeB >= endTimeA || endTimeB <= startTimeA) {
      intersect = 0.0;
    } else if (startTimeB >= startTimeA && endTimeB <= endTimeA) {
      intersect = timespanB;
    } else if (startTimeA >= startTimeB && endTimeA <= endTimeB) {
      intersect = timespanA;
    } else {
      intersect = (startTimeA > startTimeB) ? (endTimeB - startTimeA) : (endTimeA - startTimeB);
    }

    similarity = intersect / (Math.sqrt(timespanA) * Math.sqrt(timespanB));
    try {
      contentBuilder.field("Temporal_Covergae_Sim", similarity);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      LOG.error("Temporal similarity calculation failed : ", e);
    }
  }