public static void standardTriples()

in core/src/main/java/org/apache/sdap/mudrod/utils/LinkageTriple.java [149:183]


  public static void standardTriples(ESDriver es, String index, String type) throws IOException {
    es.createBulkProcessor();

    SearchResponse sr = es.getClient().prepareSearch(index).setTypes(type).setQuery(QueryBuilders.matchAllQuery()).setSize(0)
        .addAggregation(AggregationBuilders.terms("concepts").field("concept_A").size(0)).execute().actionGet();
    Terms concepts = sr.getAggregations().get("concepts");

    for (Terms.Bucket entry : concepts.getBuckets()) {
      String concept = (String) entry.getKey();
      double maxSim = LinkageTriple.getMaxSimilarity(es, index, type, concept);
      if (maxSim == 1.0) {
        continue;
      }

      SearchResponse scrollResp = es.getClient().prepareSearch(index).setTypes(type).setScroll(new TimeValue(60000)).setQuery(QueryBuilders.termQuery("concept_A", concept))
          .addSort("weight", SortOrder.DESC).setSize(100).execute().actionGet();

      while (true) {
        for (SearchHit hit : scrollResp.getHits().getHits()) {
          Map<String, Object> metadata = hit.getSource();
          double sim = (double) metadata.get("weight");
          double newSim = sim / maxSim;
          UpdateRequest ur = es.generateUpdateRequest(index, type, hit.getId(), "weight", Double.parseDouble(df.format(newSim)));
          es.getBulkProcessor().add(ur);
        }

        scrollResp = es.getClient().prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(600000)).execute().actionGet();
        if (scrollResp.getHits().getHits().length == 0) {
          break;
        }
      }
    }

    es.destroyBulkProcessor();
  }