diff --git a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java index ddcb04bb406ca0d85e3d305c6afd38a70dc63df5..210098522513e81ed283ce65d15eb990e6fdbd56 100644 --- a/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java +++ b/src/main/java/org/codelibs/fess/api/gsa/GsaApiManager.java @@ -66,6 +66,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { private static final String OUTPUT_XML = "xml"; // or xml_no_dtd // http://www.google.com/google.dtd. + @Deprecated private static final String GSA_META_SUFFIX = "_s"; protected String gsaPathPrefix = "/gsa"; @@ -112,8 +113,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { appendParam(buf, name, value, URLEncoder.encode(value, Constants.UTF_8)); } - protected void appendParam(final StringBuilder buf, final String name, final String value, final String original) - throws UnsupportedEncodingException { + protected void appendParam(final StringBuilder buf, final String name, final String value, final String original) { buf.append("<PARAM name=\""); buf.append(escapeXml(name)); buf.append("\" value=\""); @@ -434,7 +434,7 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { } } - protected static class GsaRequestParams extends SearchRequestParams { + protected class GsaRequestParams extends SearchRequestParams { private final HttpServletRequest request; @@ -462,7 +462,15 @@ public class GsaApiManager extends BaseApiManager implements WebApiManager { @Override public String[] getExtraQueries() { - return getParamValueArray(request, "ex_q"); + final List<String> queryList = new ArrayList<>(); + for (final String s : getParamValueArray(request, "ex_q")) { + queryList.add(s.trim()); + } + final String requiredFields = request.getParameter("requiredfields"); + if (StringUtil.isNotBlank(requiredFields)) { + queryList.add(gsaMetaPrefix + requiredFields.replace(".", " AND " + gsaMetaPrefix).replace("|", " OR " + gsaMetaPrefix)); + } + return queryList.toArray(new String[queryList.size()]); } @Override