code: public List<SecondaryIndexSearcher> getIndexSearchersForQuery(List<IndexExpression> clause)
      {
          Map<String, Set<ByteBuffer>> groupByIndexType = new HashMap<>();
  
          //Group columns by type
          for (IndexExpression ix : clause)
          {
              SecondaryIndex index = getIndexForColumn(ix.column);
  
              if (index == null || !index.supportsOperator(ix.operator))
                  continue;
  
              Set<ByteBuffer> columns = groupByIndexType.get(index.indexTypeForGrouping());
  
              if (columns == null)
              {
                  columns = new HashSet<>();
                  groupByIndexType.put(index.indexTypeForGrouping(), columns);
              }
  
              columns.add(ix.column);
          }
  
          List<SecondaryIndexSearcher> indexSearchers = new ArrayList<>(groupByIndexType.size());
  
          //create searcher per type
          for (Set<ByteBuffer> column : groupByIndexType.values())
              indexSearchers.add(getIndexForColumn(column.iterator().next()).createSecondaryIndexSearcher(column));
  
          return indexSearchers;
      }
docs: Get a list of IndexSearchers from the union of expression index types
  @param clause the query clause
  @return the searchers needed to query the index