algoliasearch/src/main/java/com/algolia/search/saas/helpers/DisjunctiveFaceting.java
public <T extends Collection<String>> Request searchDisjunctiveFacetingAsync(@NonNull Query query, @NonNull final Collection<String> disjunctiveFacets, @NonNull final Map<String, T> refinements, @NonNull final CompletionHandler completionHandler) {
        final List<Query> queries = computeDisjunctiveFacetingQueries(query, disjunctiveFacets, refinements);
        return multipleQueriesAsync(queries, new CompletionHandler() {
            @Override
            public void requestCompleted(JSONObject content, AlgoliaException error) {
                JSONObject aggregatedResults = null;
                try {
                    if (content != null) {
                        aggregatedResults = aggregateDisjunctiveFacetingResults(content, disjunctiveFacets, refinements);
                    }
                } catch (AlgoliaException e) {
                    error = e;
                }
                completionHandler.requestCompleted(aggregatedResults, error);
            }
        });
    }
public <T extends Collection<String>> Request searchDisjunctiveFacetingAsync(@NonNull Query query, @NonNull final Collection<String> disjunctiveFacets, @NonNull final Map<String, T> refinements, @NonNull final CompletionHandler completionHandler) {
        final List<Query> queries = computeDisjunctiveFacetingQueries(query, disjunctiveFacets, refinements);
        return multipleQueriesAsync(queries, new CompletionHandler() {
            @Override
            public void requestCompleted(JSONObject content, AlgoliaException error) {
                JSONObject aggregatedResults = null;
                try {
                    if (content != null) {
                        aggregatedResults = aggregateDisjunctiveFacetingResults(content, disjunctiveFacets, refinements);
                    }
                } catch (AlgoliaException e) {
                    error = e;
                }
                completionHandler.requestCompleted(aggregatedResults, error);
            }
        });
    }
public < T extends Collection < String > > Request searchDisjunctiveFacetingAsync ( @ NonNull Query query , @ NonNull final Collection < String > disjunctiveFacets , @ NonNull final Map < String , T > refinements , @ NonNull final CompletionHandler completionHandler ) { final List < Query > queries = computeDisjunctiveFacetingQueries ( query , disjunctiveFacets , refinements ) ; return multipleQueriesAsync ( queries , new CompletionHandler ( ) { @ Override public void requestCompleted ( JSONObject content , AlgoliaException error ) { JSONObject aggregatedResults = null ; try { if ( content != null ) { aggregatedResults = aggregateDisjunctiveFacetingResults ( content , disjunctiveFacets , refinements ) ; } } catch ( AlgoliaException e ) { error = e ; } completionHandler . requestCompleted ( aggregatedResults , error ) ; } } ) ; }
Perform a search with disjunctive facets, generating as many queries as number of disjunctive facets.

@param query             The query.
@param disjunctiveFacets List of disjunctive facets.
@param refinements       The current refinements, mapping facet names to a list of values.
@param completionHandler The listener that will be notified of the request's outcome.
@return A cancellable request.
Perform a search with disjunctive facets generating as many queries as number of disjunctive facets .