Browse Source

add virtual_host to suggest

yfujita 8 years ago
parent
commit
297d846914

+ 24 - 2
src/main/java/org/codelibs/fess/api/suggest/SuggestApiManager.java

@@ -79,6 +79,12 @@ public class SuggestApiManager extends BaseJsonApiManager {
             builder.setSize(parameter.getNum());
             builder.setSize(parameter.getNum());
             stream(langs).of(stream -> stream.forEach(builder::addLang));
             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());
             builder.addKind(SuggestItem.Kind.USER.toString());
             if (ComponentUtil.getFessConfig().isSuggestSearchLog()) {
             if (ComponentUtil.getFessConfig().isSuggestSearchLog()) {
                 builder.addKind(SuggestItem.Kind.QUERY.toString());
                 builder.addKind(SuggestItem.Kind.QUERY.toString());
@@ -149,8 +155,12 @@ public class SuggestApiManager extends BaseJsonApiManager {
 
 
         private final HttpServletRequest request;
         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.query = query;
+            this.tags = tags;
             this.fields = fields;
             this.fields = fields;
             this.num = num;
             this.num = num;
             this.request = request;
             this.request = request;
@@ -174,7 +184,15 @@ public class SuggestApiManager extends BaseJsonApiManager {
                 num = 10;
                 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
         @Override
@@ -195,6 +213,10 @@ public class SuggestApiManager extends BaseJsonApiManager {
             throw new UnsupportedOperationException();
             throw new UnsupportedOperationException();
         }
         }
 
 
+        public String[] getTags() {
+            return tags;
+        }
+
         @Override
         @Override
         public String[] getLanguages() {
         public String[] getLanguages() {
             return getParamValueArray(request, "lang");
             return getParamValueArray(request, "lang");

+ 5 - 0
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) {
                     if (sb.length() > 0) {
                         final String[] langs = searchLog.getLanguages() == null ? new String[] {} : searchLog.getLanguages().split(",");
                         final String[] langs = searchLog.getLanguages() == null ? new String[] {} : searchLog.getLanguages().split(",");
                         stream(searchLog.getRoles()).of(stream -> stream.forEach(role -> roles.add(role)));
                         stream(searchLog.getRoles()).of(stream -> stream.forEach(role -> roles.add(role)));