public ResultSet query(
      StoreRef store,
      String language,
      String queryString,
      QueryParameterDefinition[] queryParameterDefinitions)
      throws SearcherException {
    store = tenantService.getName(store);

    SearchParameters sp = new SearchParameters();
    sp.addStore(store);
    sp.setLanguage(language);
    sp.setQuery(queryString);
    if (queryParameterDefinitions != null) {
      for (QueryParameterDefinition qpd : queryParameterDefinitions) {
        sp.addQueryParameterDefinition(qpd);
      }
    }
    sp.excludeDataInTheCurrentTransaction(true);

    return query(sp);
  }
  public static CMISQueryOptions create(SearchParameters searchParameters) {
    String sql = searchParameters.getQuery();

    CMISQueryOptions options = new CMISQueryOptions(sql, searchParameters.getStores().get(0));
    options.setIncludeInTransactionData(!searchParameters.excludeDataInTheCurrentTransaction());
    options.setDefaultFTSConnective(
        searchParameters.getDefaultOperator() == SearchParameters.Operator.OR
            ? Connective.OR
            : Connective.AND);
    options.setDefaultFTSFieldConnective(
        searchParameters.getDefaultOperator() == SearchParameters.Operator.OR
            ? Connective.OR
            : Connective.AND);
    options.setSkipCount(searchParameters.getSkipCount());
    options.setMaxPermissionChecks(searchParameters.getMaxPermissionChecks());
    options.setMaxPermissionCheckTimeMillis(searchParameters.getMaxPermissionCheckTimeMillis());
    if (searchParameters.getLimitBy() == LimitBy.FINAL_SIZE) {
      options.setMaxItems(searchParameters.getLimit());
    } else {
      options.setMaxItems(searchParameters.getMaxItems());
    }
    options.setMlAnalaysisMode(searchParameters.getMlAnalaysisMode());
    options.setLocales(searchParameters.getLocales());
    options.setStores(searchParameters.getStores());
    options.setUseInMemorySort(searchParameters.getUseInMemorySort());
    options.setMaxRawResultSetSizeForInMemorySort(
        searchParameters.getMaxRawResultSetSizeForInMemorySort());
    // options.setQuery(); Done on conbstruction
    // options.setQueryMode(); Should set afterwards
    options.setQueryParameterDefinitions(searchParameters.getQueryParameterDefinitions());
    options.setDefaultFieldName(searchParameters.getDefaultFieldName());
    options.setBulkFetchEnabled(searchParameters.isBulkFetchEnabled());
    options.setExcludeTenantFilter(searchParameters.getExcludeTenantFilter());
    options.setSinceTxId(searchParameters.getSinceTxId());
    return options;
  }