Kaynağa Gözat

fix #1145 add related query to json response

Shinsuke Sugaya 8 yıl önce
ebeveyn
işleme
ba220a46ab

+ 13 - 1
src/main/java/org/codelibs/fess/api/BaseJsonApiManager.java

@@ -114,7 +114,19 @@ public abstract class BaseJsonApiManager extends BaseApiManager {
         }
 
         final StringBuilder buf = new StringBuilder(255);
-        if (obj instanceof List<?>) {
+        if (obj instanceof String[]) {
+            buf.append('[');
+            boolean first = true;
+            for (final Object child : (String[]) obj) {
+                if (first) {
+                    first = false;
+                } else {
+                    buf.append(',');
+                }
+                buf.append(escapeJson(child));
+            }
+            buf.append(']');
+        } else if (obj instanceof List<?>) {
             buf.append('[');
             boolean first = true;
             for (final Object child : (List<?>) obj) {

+ 7 - 0
src/main/java/org/codelibs/fess/api/json/JsonApiManager.java

@@ -43,6 +43,7 @@ import org.codelibs.fess.es.client.FessEsClient;
 import org.codelibs.fess.exception.WebApiException;
 import org.codelibs.fess.helper.LabelTypeHelper;
 import org.codelibs.fess.helper.PopularWordHelper;
+import org.codelibs.fess.helper.RelatedQueryHelper;
 import org.codelibs.fess.helper.SystemHelper;
 import org.codelibs.fess.helper.UserInfoHelper;
 import org.codelibs.fess.mylasta.direction.FessConfig;
@@ -126,6 +127,7 @@ public class JsonApiManager extends BaseJsonApiManager {
     protected void processSearchRequest(final HttpServletRequest request, final HttpServletResponse response, final FilterChain chain) {
         final SearchService searchService = ComponentUtil.getComponent(SearchService.class);
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
+        final RelatedQueryHelper relatedQueryHelper = ComponentUtil.getRelatedQueryHelper();
 
         int status = 0;
         Exception err = null;
@@ -195,6 +197,11 @@ public class JsonApiManager extends BaseJsonApiManager {
             buf.append(escapeJson(searchQuery));
             buf.append(",\"requested_time\":");
             buf.append(requestedTime);
+            final String[] relatedQueries = relatedQueryHelper.getRelatedQueries(params.getQuery());
+            if (relatedQueries.length > 0) {
+                buf.append(",\"related_query\":");
+                buf.append(escapeJson(relatedQueries));
+            }
             if (!documentItems.isEmpty()) {
                 buf.append(',');
                 buf.append("\"result\":[");