diff --git a/src/main/java/org/codelibs/fess/Constants.java b/src/main/java/org/codelibs/fess/Constants.java index d4ad3b23d..54937a478 100644 --- a/src/main/java/org/codelibs/fess/Constants.java +++ b/src/main/java/org/codelibs/fess/Constants.java @@ -35,6 +35,8 @@ public class Constants extends CoreLibConstants { public static final Boolean F = false; + public static final String SCORE = "score"; + public static final String ON = "on"; public static final String READY = "ready"; diff --git a/src/main/java/org/codelibs/fess/app/service/SearchService.java b/src/main/java/org/codelibs/fess/app/service/SearchService.java index 359401ba4..e94666a55 100644 --- a/src/main/java/org/codelibs/fess/app/service/SearchService.java +++ b/src/main/java/org/codelibs/fess/app/service/SearchService.java @@ -16,7 +16,6 @@ package org.codelibs.fess.app.service; import java.text.NumberFormat; -import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; @@ -43,6 +42,7 @@ import org.codelibs.fess.es.client.FessEsClient.SearchConditionBuilder; import org.codelibs.fess.es.client.FessEsClientException; import org.codelibs.fess.helper.QueryHelper; import org.codelibs.fess.helper.SystemHelper; +import org.codelibs.fess.helper.ViewHelper; import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; @@ -198,23 +198,32 @@ public class SearchService { .responseFields(queryHelper.getScrollResponseFields()).searchRequestType(params.getType()).build(); }, (searchResponse, hit) -> { + final Map docMap = new HashMap<>(); final Map source = hit.getSourceAsMap(); if (source != null) { - final Map docMap = new HashMap<>(source); - docMap.put(fessConfig.getIndexFieldId(), hit.getId()); - docMap.put(fessConfig.getIndexFieldVersion(), hit.getVersion()); - return docMap; + docMap.putAll(source); } final Map fields = hit.getFields(); if (fields != null) { - final Map docMap = - fields.entrySet().stream() - .collect(Collectors.toMap(e -> e.getKey(), e -> (Object) e.getValue().getValues())); - docMap.put(fessConfig.getIndexFieldId(), hit.getId()); - docMap.put(fessConfig.getIndexFieldVersion(), hit.getVersion()); - return docMap; + docMap.putAll(fields.entrySet().stream() + .collect(Collectors.toMap(e -> e.getKey(), e -> (Object) e.getValue().getValues()))); } - return Collections.emptyMap(); + + final ViewHelper viewHelper = ComponentUtil.getViewHelper(); + if (viewHelper != null && !docMap.isEmpty()) { + docMap.put(fessConfig.getResponseFieldContentTitle(), viewHelper.getContentTitle(docMap)); + docMap.put(fessConfig.getResponseFieldContentDescription(), viewHelper.getContentDescription(docMap)); + docMap.put(fessConfig.getResponseFieldUrlLink(), viewHelper.getUrlLink(docMap)); + docMap.put(fessConfig.getResponseFieldSitePath(), viewHelper.getSitePath(docMap)); + } + + if (!docMap.containsKey(Constants.SCORE)) { + docMap.put(Constants.SCORE, hit.getScore()); + } + + docMap.put(fessConfig.getIndexFieldId(), hit.getId()); + docMap.put(fessConfig.getIndexFieldVersion(), hit.getVersion()); + return docMap; }, cursor); }