docs: public void modifyRequest(ResponseBuilder rb, SearchComponent who,
        ShardRequest sreq) {
      if (sreq.params.getBool(MtasSolrSearchComponent.PARAM_MTAS, false)) {
        if (sreq.params.getBool(PARAM_MTAS_TERMVECTOR, false)) {
          // compute keys
          Set<String> keys = MtasSolrResultUtil
              .getIdsFromParameters(rb.req.getParams(), PARAM_MTAS_TERMVECTOR);
          if ((sreq.purpose & ShardRequest.PURPOSE_GET_TOP_IDS) != 0) {
            for (String key : keys) {
              String oldNumber = sreq.params.get(PARAM_MTAS_TERMVECTOR + "." + key
                  + "." + NAME_MTAS_TERMVECTOR_NUMBER);
              int number;
              if (oldNumber != null) {
                int oldNumberValue = Integer.parseInt(oldNumber);
                number = (oldNumberValue >= 0)
                    ? oldNumberValue * SHARD_NUMBER_MULTIPLIER : oldNumberValue;
              } else {
                number = DEFAULT_NUMBER * SHARD_NUMBER_MULTIPLIER;
              }
              sreq.params.add(
                  PARAM_MTAS_TERMVECTOR + "." + key + "."
                      + NAME_MTAS_TERMVECTOR_NUMBER_SHARDS,
                  String.valueOf(number));
            }
          } else {
            sreq.params.remove(PARAM_MTAS_TERMVECTOR);
            for (String key : keys) {
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_FIELD);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_KEY);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_PREFIX);
              Set<String> distanceKeys = MtasSolrResultUtil
                  .getIdsFromParameters(rb.req.getParams(), PARAM_MTAS_TERMVECTOR
                      + "." + key + "." + NAME_MTAS_TERMVECTOR_DISTANCE);
              for (String distanceKey : distanceKeys) {
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE_KEY);
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE_TYPE);
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE_BASE);
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey + "."
                    + NAME_MTAS_TERMVECTOR_DISTANCE_MAXIMUM);
                Set<String> distanceParameters = MtasSolrResultUtil
                    .getIdsFromParameters(rb.req.getParams(),
                        PARAM_MTAS_TERMVECTOR + "." + key + "."
                            + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey
                            + "." + NAME_MTAS_TERMVECTOR_DISTANCE_PARAMETER);
                for (String distanceParameter : distanceParameters) {
                  sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                      + NAME_MTAS_TERMVECTOR_DISTANCE + "." + distanceKey + "."
                      + NAME_MTAS_TERMVECTOR_DISTANCE_PARAMETER + "."
                      + distanceParameter);
                }
              }
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_REGEXP);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_FULL);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_SORT_TYPE);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_SORT_DIRECTION);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_NUMBER);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_NUMBER_SHARDS);
              Set<String> functionKeys = MtasSolrResultUtil
                  .getIdsFromParameters(rb.req.getParams(), PARAM_MTAS_TERMVECTOR
                      + "." + key + "." + NAME_MTAS_TERMVECTOR_FUNCTION);
              for (String functionKey : functionKeys) {
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION + "." + functionKey + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION_EXPRESSION);
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION + "." + functionKey + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION_KEY);
                sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION + "." + functionKey + "."
                    + NAME_MTAS_TERMVECTOR_FUNCTION_TYPE);
              }
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_BOUNDARY);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_LIST);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_LIST_REGEXP);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_IGNORE_REGEXP);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_IGNORE_LIST);
              sreq.params.remove(PARAM_MTAS_TERMVECTOR + "." + key + "."
                  + NAME_MTAS_TERMVECTOR_IGNORE_REGEXP);
            }
          }
        }
      }
    }