Пример #1
0
  /**
   * Setup the basic query arguments: the main query and all the filters (default + user). Return
   * the list of user filter
   *
   * @param context
   * @param request
   * @param queryArgs the query object to populate
   * @return the list of user filer (as filter query)
   */
  private static List<String> setupBasicQuery(
      Context context,
      DiscoveryConfiguration discoveryConfiguration,
      HttpServletRequest request,
      DiscoverQuery queryArgs) {
    // Get the query
    String query = request.getParameter("query");
    if (StringUtils.isNotBlank(query)) {
      queryArgs.setQuery(query);
    }

    List<String> defaultFilterQueries = discoveryConfiguration.getDefaultFilterQueries();
    if (defaultFilterQueries != null) {
      for (String f : defaultFilterQueries) {
        queryArgs.addFacetQuery(f);
      }
    }
    List<String[]> filters = getFilters(request);
    List<String> userFilters = new ArrayList<String>();
    for (String[] f : filters) {
      try {
        String newFilterQuery =
            SearchUtils.getSearchService()
                .toFilterQuery(context, f[0], f[1], f[2])
                .getFilterQuery();
        if (newFilterQuery != null) {
          queryArgs.addFilterQueries(newFilterQuery);
          userFilters.add(newFilterQuery);
        }
      } catch (SQLException e) {
        log.error(
            LogManager.getHeader(
                context,
                "Error in discovery while setting up user facet query",
                "filter_field: " + f[0] + ",filter_type:" + f[1] + ",filer_value:" + f[2]),
            e);
      }
    }

    return userFilters;
  }