Example #1
0
  public List<Future<?>> index(
      final MiruContext<BM, IBM, ?> context,
      MiruTenantId tenantId,
      final Future<List<BloomWork>> bloomWorksFuture,
      boolean repair,
      ExecutorService indexExecutor)
      throws ExecutionException, InterruptedException {
    StackBuffer stackBuffer = new StackBuffer();
    List<BloomWork> bloomWorks = bloomWorksFuture.get();

    final MiruFieldIndex<BM, IBM> bloomFieldIndex =
        context.getFieldIndexProvider().getFieldIndex(MiruFieldType.bloom);
    int callableCount = 0;
    List<Future<?>> futures = Lists.newArrayList();
    for (final BloomWork bloomWork : bloomWorks) {
      futures.add(
          indexExecutor.submit(
              () -> {
                log.inc("count", bloomWork.bloomFieldValues.size());
                log.inc("count", bloomWork.bloomFieldValues.size(), tenantId.toString());
                MiruFieldDefinition bloomFieldDefinition =
                    context.schema.getFieldDefinition(bloomWork.bloomFieldId);
                MiruTermId compositeBloomId =
                    indexUtil.makeBloomTerm(bloomWork.fieldValue, bloomFieldDefinition.name);
                MiruInvertedIndex<BM, IBM> invertedIndex =
                    bloomFieldIndex.getOrCreateInvertedIndex(
                        "indexBloom", bloomWork.fieldId, compositeBloomId);
                bloomIndex.put(invertedIndex, bloomWork.bloomFieldValues, stackBuffer);
                return null;
              }));
      callableCount++;
    }
    log.trace("Submitted {} bloom callables", callableCount);

    return futures;
  }