diff --git a/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java b/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java index d3ef301d8..6f70bd0c7 100644 --- a/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java +++ b/src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java @@ -79,6 +79,12 @@ public class SuggestApiManager extends BaseJsonApiManager { builder.setSize(parameter.getNum()); stream(langs).of(stream -> stream.forEach(builder::addLang)); + stream(parameter.getTags()).of(stream -> stream.forEach(builder::addTag)); + final String key = ComponentUtil.getFessConfig().getVirtualHostKey(); + if (StringUtil.isNotBlank(key)) { + builder.addTag(key); + } + builder.addKind(SuggestItem.Kind.USER.toString()); if (ComponentUtil.getFessConfig().isSuggestSearchLog()) { builder.addKind(SuggestItem.Kind.QUERY.toString()); @@ -149,8 +155,12 @@ public class SuggestApiManager extends BaseJsonApiManager { private final HttpServletRequest request; - protected RequestParameter(final HttpServletRequest request, final String query, final String[] fields, final int num) { + private final String[] tags; + + protected RequestParameter(final HttpServletRequest request, final String query, final String[] tags, final String[] fields, + final int num) { this.query = query; + this.tags = tags; this.fields = fields; this.num = num; this.request = request; @@ -174,7 +184,15 @@ public class SuggestApiManager extends BaseJsonApiManager { num = 10; } - return new RequestParameter(request, query, fields, num); + final String tagsStr = request.getParameter("tags"); + final String[] tags; + if (StringUtil.isNotBlank(tagsStr)) { + tags = tagsStr.split(","); + } else { + tags = new String[0]; + } + + return new RequestParameter(request, query, tags, fields, num); } @Override @@ -195,6 +213,10 @@ public class SuggestApiManager extends BaseJsonApiManager { throw new UnsupportedOperationException(); } + public String[] getTags() { + return tags; + } + @Override public String[] getLanguages() { return getParamValueArray(request, "lang"); diff --git a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java index 156a38173..5951868b5 100644 --- a/src/main/java/org/codelibs/fess/helper/SuggestHelper.java +++ b/src/main/java/org/codelibs/fess/helper/SuggestHelper.java @@ -162,6 +162,11 @@ public class SuggestHelper { } } + final String virtualHost = searchLog.getVirtualHost(); + if (virtualHost != null) { + tags.add(virtualHost); + } + if (sb.length() > 0) { final String[] langs = searchLog.getLanguages() == null ? new String[] {} : searchLog.getLanguages().split(","); stream(searchLog.getRoles()).of(stream -> stream.forEach(role -> roles.add(role)));