diff --git a/src/main/java/org/codelibs/fess/Constants.java b/src/main/java/org/codelibs/fess/Constants.java index af3c661f3..4ef69a9d4 100644 --- a/src/main/java/org/codelibs/fess/Constants.java +++ b/src/main/java/org/codelibs/fess/Constants.java @@ -37,6 +37,8 @@ public class Constants extends CoreLibConstants { public static final String SCORE = "score"; + public static final String SEARCHER = "searcher"; + public static final String ON = "on"; public static final String READY = "ready"; diff --git a/src/main/java/org/codelibs/fess/rank/fusion/DefaultSearcher.java b/src/main/java/org/codelibs/fess/rank/fusion/DefaultSearcher.java index 8397bbd6e..a2a80b535 100644 --- a/src/main/java/org/codelibs/fess/rank/fusion/DefaultSearcher.java +++ b/src/main/java/org/codelibs/fess/rank/fusion/DefaultSearcher.java @@ -20,6 +20,7 @@ import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.codelibs.core.collection.ArrayUtil; import org.codelibs.core.stream.StreamUtil; import org.codelibs.fess.Constants; import org.codelibs.fess.entity.SearchRequestParams; @@ -30,6 +31,7 @@ import org.codelibs.fess.mylasta.action.FessUserBean; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.rank.fusion.SearchResult.SearchResultBuilder; import org.codelibs.fess.util.ComponentUtil; +import org.codelibs.fess.util.DocumentUtil; import org.codelibs.fess.util.FacetResponse; import org.dbflute.optional.OptionalEntity; import org.dbflute.optional.OptionalThing; @@ -188,6 +190,14 @@ public class DefaultSearcher extends RankFusionSearcher { if (!docMap.containsKey(fessConfig.getIndexFieldId())) { docMap.put(fessConfig.getIndexFieldId(), searchHit.getId()); } + + final String[] searchers = DocumentUtil.getValue(docMap, Constants.SEARCHER, String[].class); + if (searchers != null) { + docMap.put(Constants.SEARCHER, ArrayUtil.add(searchers, getName())); + } else { + docMap.put(Constants.SEARCHER, new String[] { getName() }); + } + return docMap; } diff --git a/src/main/java/org/codelibs/fess/rank/fusion/RankFusionSearcher.java b/src/main/java/org/codelibs/fess/rank/fusion/RankFusionSearcher.java index ee821ca7e..5160a1ffb 100644 --- a/src/main/java/org/codelibs/fess/rank/fusion/RankFusionSearcher.java +++ b/src/main/java/org/codelibs/fess/rank/fusion/RankFusionSearcher.java @@ -15,11 +15,22 @@ */ package org.codelibs.fess.rank.fusion; +import java.util.Locale; + +import org.codelibs.core.lang.StringUtil; import org.codelibs.fess.entity.SearchRequestParams; import org.codelibs.fess.mylasta.action.FessUserBean; import org.dbflute.optional.OptionalThing; public abstract class RankFusionSearcher { + protected String name; + + public String getName() { + if (name == null) { + name = StringUtil.decamelize(this.getClass().getSimpleName().replace("Searcher", StringUtil.EMPTY)).toLowerCase(Locale.ENGLISH); + } + return name; + } protected abstract SearchResult search(String query, SearchRequestParams params, OptionalThing userBean);