diff --git a/src/main/config/es/fess_config.json b/src/main/config/es/fess_config.json index 567af8c5d..531548ac1 100644 --- a/src/main/config/es/fess_config.json +++ b/src/main/config/es/fess_config.json @@ -899,6 +899,9 @@ "content" : { "type": "keyword" }, + "sortOrder" : { + "type": "integer" + }, "virtualHost" : { "type": "keyword" } diff --git a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java index 5fcf38db1..b993b3d85 100644 --- a/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java +++ b/src/main/java/org/codelibs/fess/api/json/JsonApiManager.java @@ -204,11 +204,9 @@ public class JsonApiManager extends BaseJsonApiManager { buf.append(",\"related_query\":"); buf.append(escapeJson(relatedQueries)); } - final String relatedContent = relatedContentHelper.getRelatedContent(params.getQuery()); - if (StringUtil.isNotBlank(relatedContent)) { - buf.append(",\"related_content\":"); - buf.append(escapeJson(relatedContent)); - } + final String[] relatedContents = relatedContentHelper.getRelatedContents(params.getQuery()); + buf.append(",\"related_contents\":"); + buf.append(escapeJson(relatedContents)); if (!documentItems.isEmpty()) { buf.append(','); buf.append("\"result\":["); diff --git a/src/main/java/org/codelibs/fess/app/web/admin/relatedcontent/CreateForm.java b/src/main/java/org/codelibs/fess/app/web/admin/relatedcontent/CreateForm.java index ad299640e..9238fefd0 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/relatedcontent/CreateForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/relatedcontent/CreateForm.java @@ -15,6 +15,8 @@ */ package org.codelibs.fess.app.web.admin.relatedcontent; +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; import javax.validation.constraints.Size; import org.codelibs.fess.app.web.CrudMode; @@ -38,6 +40,11 @@ public class CreateForm { @Size(max = 1000) public String virtualHost; + @Min(value = 0) + @Max(value = 2147483647) + @ValidateTypeFailure + public Integer sortOrder; + @Size(max = 1000) public String createdBy; @@ -48,5 +55,6 @@ public class CreateForm { crudMode = CrudMode.CREATE; createdBy = ComponentUtil.getSystemHelper().getUsername(); createdTime = ComponentUtil.getSystemHelper().getCurrentTimeAsLong(); + sortOrder = 1; } } \ No newline at end of file diff --git a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java index 65979a75c..a954fcf44 100644 --- a/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java +++ b/src/main/java/org/codelibs/fess/app/web/search/SearchAction.java @@ -138,10 +138,8 @@ public class SearchAction extends FessSearchAction { RenderDataUtil.register(data, "displayQuery", getDisplayQuery(form, labelTypeHelper.getLabelTypeItemList(SearchRequestType.SEARCH))); createPagingQuery(form); - final String relatedContent = relatedContentHelper.getRelatedContent(form.getQuery()); - if (StringUtil.isNotBlank(relatedContent)) { - RenderDataUtil.register(data, "relatedContent", relatedContent); - } + final String[] relatedContents = relatedContentHelper.getRelatedContents(form.getQuery()); + RenderDataUtil.register(data, "relatedContents", relatedContents); final String[] relatedQueries = relatedQueryHelper.getRelatedQueries(form.getQuery()); if (relatedQueries.length > 0) { RenderDataUtil.register(data, "relatedQueries", relatedQueries); diff --git a/src/main/java/org/codelibs/fess/es/config/bsbhv/BsRelatedContentBhv.java b/src/main/java/org/codelibs/fess/es/config/bsbhv/BsRelatedContentBhv.java index 41489bb12..8b8bb3a5a 100644 --- a/src/main/java/org/codelibs/fess/es/config/bsbhv/BsRelatedContentBhv.java +++ b/src/main/java/org/codelibs/fess/es/config/bsbhv/BsRelatedContentBhv.java @@ -79,6 +79,7 @@ public abstract class BsRelatedContentBhv extends EsAbstractBehavior dm.length()) { sb.delete(0, dm.length()); @@ -190,6 +197,16 @@ public class BsRelatedContent extends EsAbstractEntity { this.content = value; } + public Integer getSortOrder() { + checkSpecifiedProperty("sortOrder"); + return sortOrder; + } + + public void setSortOrder(Integer value) { + registerModifiedProperty("sortOrder"); + this.sortOrder = value; + } + public String getVirtualHost() { checkSpecifiedProperty("virtualHost"); return convertEmptyToNull(virtualHost); diff --git a/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/RelatedContentDbm.java b/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/RelatedContentDbm.java index d302bef54..5080eb3a6 100644 --- a/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/RelatedContentDbm.java +++ b/src/main/java/org/codelibs/fess/es/config/bsentity/dbmeta/RelatedContentDbm.java @@ -90,6 +90,8 @@ public class RelatedContentDbm extends AbstractDBMeta { setupEpg(_epgMap, et -> ((RelatedContent) et).getTerm(), (et, vl) -> ((RelatedContent) et).setTerm(DfTypeUtil.toString(vl)), "term"); setupEpg(_epgMap, et -> ((RelatedContent) et).getContent(), (et, vl) -> ((RelatedContent) et).setContent(DfTypeUtil.toString(vl)), "content"); + setupEpg(_epgMap, et -> ((RelatedContent) et).getSortOrder(), + (et, vl) -> ((RelatedContent) et).setSortOrder(DfTypeUtil.toInteger(vl)), "sortOrder"); setupEpg(_epgMap, et -> ((RelatedContent) et).getVirtualHost(), (et, vl) -> ((RelatedContent) et).setVirtualHost(DfTypeUtil.toString(vl)), "virtualHost"); } @@ -140,6 +142,8 @@ public class RelatedContentDbm extends AbstractDBMeta { 0, null, null, false, null, null, null, null, null, false); protected final ColumnInfo _columnContent = cci("content", "content", null, null, String.class, "content", null, false, false, false, "keyword", 0, 0, null, null, false, null, null, null, null, null, false); + protected final ColumnInfo _columnSortOrder = cci("sortOrder", "sortOrder", null, null, Integer.class, "sortOrder", null, false, false, + false, "Integer", 0, 0, null, null, false, null, null, null, null, null, false); protected final ColumnInfo _columnVirtualHost = cci("virtualHost", "virtualHost", null, null, String.class, "virtualHost", null, false, false, false, "keyword", 0, 0, null, null, false, null, null, null, null, null, false); @@ -167,6 +171,10 @@ public class RelatedContentDbm extends AbstractDBMeta { return _columnContent; } + public ColumnInfo columnSortOrder() { + return _columnSortOrder; + } + public ColumnInfo columnVirtualHost() { return _columnVirtualHost; } @@ -179,6 +187,7 @@ public class RelatedContentDbm extends AbstractDBMeta { ls.add(columnUpdatedTime()); ls.add(columnTerm()); ls.add(columnContent()); + ls.add(columnSortOrder()); ls.add(columnVirtualHost()); return ls; } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsRelatedContentCB.java b/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsRelatedContentCB.java index 82be2f752..53a1ed11d 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsRelatedContentCB.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/bs/BsRelatedContentCB.java @@ -200,6 +200,10 @@ public class BsRelatedContentCB extends EsAbstractConditionBean { doColumn("content"); } + public void columnSortOrder() { + doColumn("sortOrder"); + } + public void columnVirtualHost() { doColumn("virtualHost"); } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsRelatedContentCA.java b/src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsRelatedContentCA.java index 85483dc15..ef571e065 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsRelatedContentCA.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/ca/bs/BsRelatedContentCA.java @@ -1082,6 +1082,232 @@ public abstract class BsRelatedContentCA extends EsAbstractConditionAggregation } } + public void setSortOrder_Avg() { + setSortOrder_Avg(null); + } + + public void setSortOrder_Avg(ConditionOptionCall opLambda) { + setSortOrder_Avg("sortOrder", opLambda); + } + + public void setSortOrder_Avg(String name, ConditionOptionCall opLambda) { + AvgAggregationBuilder builder = regAvgA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Max() { + setSortOrder_Max(null); + } + + public void setSortOrder_Max(ConditionOptionCall opLambda) { + setSortOrder_Max("sortOrder", opLambda); + } + + public void setSortOrder_Max(String name, ConditionOptionCall opLambda) { + MaxAggregationBuilder builder = regMaxA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Min() { + setSortOrder_Min(null); + } + + public void setSortOrder_Min(ConditionOptionCall opLambda) { + setSortOrder_Min("sortOrder", opLambda); + } + + public void setSortOrder_Min(String name, ConditionOptionCall opLambda) { + MinAggregationBuilder builder = regMinA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Sum() { + setSortOrder_Sum(null); + } + + public void setSortOrder_Sum(ConditionOptionCall opLambda) { + setSortOrder_Sum("sortOrder", opLambda); + } + + public void setSortOrder_Sum(String name, ConditionOptionCall opLambda) { + SumAggregationBuilder builder = regSumA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_ExtendedStats() { + setSortOrder_ExtendedStats(null); + } + + public void setSortOrder_ExtendedStats(ConditionOptionCall opLambda) { + setSortOrder_ExtendedStats("sortOrder", opLambda); + } + + public void setSortOrder_ExtendedStats(String name, ConditionOptionCall opLambda) { + ExtendedStatsAggregationBuilder builder = regExtendedStatsA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Stats() { + setSortOrder_Stats(null); + } + + public void setSortOrder_Stats(ConditionOptionCall opLambda) { + setSortOrder_Stats("sortOrder", opLambda); + } + + public void setSortOrder_Stats(String name, ConditionOptionCall opLambda) { + StatsAggregationBuilder builder = regStatsA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Percentiles() { + setSortOrder_Percentiles(null); + } + + public void setSortOrder_Percentiles(ConditionOptionCall opLambda) { + setSortOrder_Percentiles("sortOrder", opLambda); + } + + public void setSortOrder_Percentiles(String name, ConditionOptionCall opLambda) { + PercentilesAggregationBuilder builder = regPercentilesA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_PercentileRanks() { + setSortOrder_PercentileRanks(null); + } + + public void setSortOrder_PercentileRanks(ConditionOptionCall opLambda) { + setSortOrder_PercentileRanks("sortOrder", opLambda); + } + + public void setSortOrder_PercentileRanks(String name, ConditionOptionCall opLambda) { + PercentileRanksAggregationBuilder builder = regPercentileRanksA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Histogram() { + setSortOrder_Histogram(null); + } + + public void setSortOrder_Histogram(ConditionOptionCall opLambda) { + setSortOrder_Histogram("sortOrder", opLambda, null); + } + + public void setSortOrder_Histogram(ConditionOptionCall opLambda, + OperatorCall aggsLambda) { + setSortOrder_Histogram("sortOrder", opLambda, aggsLambda); + } + + public void setSortOrder_Histogram(String name, ConditionOptionCall opLambda, + OperatorCall aggsLambda) { + HistogramAggregationBuilder builder = regHistogramA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + if (aggsLambda != null) { + RelatedContentCA ca = new RelatedContentCA(); + aggsLambda.callback(ca); + ca.getAggregationBuilderList().forEach(builder::subAggregation); + } + } + + public void setSortOrder_Range() { + setSortOrder_Range(null); + } + + public void setSortOrder_Range(ConditionOptionCall opLambda) { + setSortOrder_Range("sortOrder", opLambda, null); + } + + public void setSortOrder_Range(ConditionOptionCall opLambda, OperatorCall aggsLambda) { + setSortOrder_Range("sortOrder", opLambda, aggsLambda); + } + + public void setSortOrder_Range(String name, ConditionOptionCall opLambda, + OperatorCall aggsLambda) { + RangeAggregationBuilder builder = regRangeA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + if (aggsLambda != null) { + RelatedContentCA ca = new RelatedContentCA(); + aggsLambda.callback(ca); + ca.getAggregationBuilderList().forEach(builder::subAggregation); + } + } + + public void setSortOrder_Count() { + setSortOrder_Count(null); + } + + public void setSortOrder_Count(ConditionOptionCall opLambda) { + setSortOrder_Count("sortOrder", opLambda); + } + + public void setSortOrder_Count(String name, ConditionOptionCall opLambda) { + ValueCountAggregationBuilder builder = regCountA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Cardinality() { + setSortOrder_Cardinality(null); + } + + public void setSortOrder_Cardinality(ConditionOptionCall opLambda) { + setSortOrder_Cardinality("sortOrder", opLambda); + } + + public void setSortOrder_Cardinality(String name, ConditionOptionCall opLambda) { + CardinalityAggregationBuilder builder = regCardinalityA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Missing() { + setSortOrder_Missing(null); + } + + public void setSortOrder_Missing(ConditionOptionCall opLambda) { + setSortOrder_Missing("sortOrder", opLambda, null); + } + + public void setSortOrder_Missing(ConditionOptionCall opLambda, OperatorCall aggsLambda) { + setSortOrder_Missing("sortOrder", opLambda, aggsLambda); + } + + public void setSortOrder_Missing(String name, ConditionOptionCall opLambda, + OperatorCall aggsLambda) { + MissingAggregationBuilder builder = regMissingA(name, "sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + if (aggsLambda != null) { + RelatedContentCA ca = new RelatedContentCA(); + aggsLambda.callback(ca); + ca.getAggregationBuilderList().forEach(builder::subAggregation); + } + } + public void setVirtualHost_Terms() { setVirtualHost_Terms(null); } diff --git a/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsRelatedContentCQ.java b/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsRelatedContentCQ.java index 26859d65a..c5859b9de 100644 --- a/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsRelatedContentCQ.java +++ b/src/main/java/org/codelibs/fess/es/config/cbean/cq/bs/BsRelatedContentCQ.java @@ -1430,6 +1430,184 @@ public abstract class BsRelatedContentCQ extends EsAbstractConditionQuery { return this; } + public void setSortOrder_Equal(Integer sortOrder) { + setSortOrder_Term(sortOrder, null); + } + + public void setSortOrder_Equal(Integer sortOrder, ConditionOptionCall opLambda) { + setSortOrder_Term(sortOrder, opLambda); + } + + public void setSortOrder_Term(Integer sortOrder) { + setSortOrder_Term(sortOrder, null); + } + + public void setSortOrder_Term(Integer sortOrder, ConditionOptionCall opLambda) { + TermQueryBuilder builder = regTermQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_NotEqual(Integer sortOrder) { + setSortOrder_NotTerm(sortOrder, null); + } + + public void setSortOrder_NotTerm(Integer sortOrder) { + setSortOrder_NotTerm(sortOrder, null); + } + + public void setSortOrder_NotEqual(Integer sortOrder, ConditionOptionCall opLambda) { + setSortOrder_NotTerm(sortOrder, opLambda); + } + + public void setSortOrder_NotTerm(Integer sortOrder, ConditionOptionCall opLambda) { + not(not -> not.setSortOrder_Term(sortOrder), opLambda); + } + + public void setSortOrder_Terms(Collection sortOrderList) { + setSortOrder_Terms(sortOrderList, null); + } + + public void setSortOrder_Terms(Collection sortOrderList, ConditionOptionCall opLambda) { + TermsQueryBuilder builder = regTermsQ("sortOrder", sortOrderList); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_InScope(Collection sortOrderList) { + setSortOrder_Terms(sortOrderList, null); + } + + public void setSortOrder_InScope(Collection sortOrderList, ConditionOptionCall opLambda) { + setSortOrder_Terms(sortOrderList, opLambda); + } + + public void setSortOrder_Match(Integer sortOrder) { + setSortOrder_Match(sortOrder, null); + } + + public void setSortOrder_Match(Integer sortOrder, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regMatchQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_MatchPhrase(Integer sortOrder) { + setSortOrder_MatchPhrase(sortOrder, null); + } + + public void setSortOrder_MatchPhrase(Integer sortOrder, ConditionOptionCall opLambda) { + MatchPhraseQueryBuilder builder = regMatchPhraseQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_MatchPhrasePrefix(Integer sortOrder) { + setSortOrder_MatchPhrasePrefix(sortOrder, null); + } + + public void setSortOrder_MatchPhrasePrefix(Integer sortOrder, ConditionOptionCall opLambda) { + MatchPhrasePrefixQueryBuilder builder = regMatchPhrasePrefixQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Fuzzy(Integer sortOrder) { + setSortOrder_Fuzzy(sortOrder, null); + } + + public void setSortOrder_Fuzzy(Integer sortOrder, ConditionOptionCall opLambda) { + MatchQueryBuilder builder = regFuzzyQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_GreaterThan(Integer sortOrder) { + setSortOrder_GreaterThan(sortOrder, null); + } + + public void setSortOrder_GreaterThan(Integer sortOrder, ConditionOptionCall opLambda) { + final Object _value = sortOrder; + RangeQueryBuilder builder = regRangeQ("sortOrder", ConditionKey.CK_GREATER_THAN, _value); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_LessThan(Integer sortOrder) { + setSortOrder_LessThan(sortOrder, null); + } + + public void setSortOrder_LessThan(Integer sortOrder, ConditionOptionCall opLambda) { + final Object _value = sortOrder; + RangeQueryBuilder builder = regRangeQ("sortOrder", ConditionKey.CK_LESS_THAN, _value); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_GreaterEqual(Integer sortOrder) { + setSortOrder_GreaterEqual(sortOrder, null); + } + + public void setSortOrder_GreaterEqual(Integer sortOrder, ConditionOptionCall opLambda) { + final Object _value = sortOrder; + RangeQueryBuilder builder = regRangeQ("sortOrder", ConditionKey.CK_GREATER_EQUAL, _value); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_LessEqual(Integer sortOrder) { + setSortOrder_LessEqual(sortOrder, null); + } + + public void setSortOrder_LessEqual(Integer sortOrder, ConditionOptionCall opLambda) { + final Object _value = sortOrder; + RangeQueryBuilder builder = regRangeQ("sortOrder", ConditionKey.CK_LESS_EQUAL, _value); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_Exists() { + setSortOrder_Exists(null); + } + + public void setSortOrder_Exists(ConditionOptionCall opLambda) { + ExistsQueryBuilder builder = regExistsQ("sortOrder"); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public void setSortOrder_CommonTerms(Integer sortOrder) { + setSortOrder_CommonTerms(sortOrder, null); + } + + public void setSortOrder_CommonTerms(Integer sortOrder, ConditionOptionCall opLambda) { + CommonTermsQueryBuilder builder = regCommonTermsQ("sortOrder", sortOrder); + if (opLambda != null) { + opLambda.callback(builder); + } + } + + public BsRelatedContentCQ addOrderBy_SortOrder_Asc() { + regOBA("sortOrder"); + return this; + } + + public BsRelatedContentCQ addOrderBy_SortOrder_Desc() { + regOBD("sortOrder"); + return this; + } + public void setVirtualHost_Equal(String virtualHost) { setVirtualHost_Term(virtualHost, null); } diff --git a/src/main/java/org/codelibs/fess/helper/RelatedContentHelper.java b/src/main/java/org/codelibs/fess/helper/RelatedContentHelper.java index d1b84b74b..b7908c441 100644 --- a/src/main/java/org/codelibs/fess/helper/RelatedContentHelper.java +++ b/src/main/java/org/codelibs/fess/helper/RelatedContentHelper.java @@ -57,6 +57,7 @@ public class RelatedContentHelper { return ComponentUtil.getComponent(RelatedContentBhv.class).selectList(cb -> { cb.query().matchAll(); + cb.query().addOrderBy_SortOrder_Asc(); cb.query().addOrderBy_Term_Asc(); cb.fetchFirst(ComponentUtil.getFessConfig().getPageRelatedqueryMaxFetchSizeAsInteger()); }); @@ -90,22 +91,24 @@ public class RelatedContentHelper { return StringUtil.isBlank(key) ? StringUtil.EMPTY : key; } - public String getRelatedContent(final String query) { + public String[] getRelatedContents(final String query) { final FessConfig fessConfig = ComponentUtil.getFessConfig(); final String key = fessConfig.getVirtualHostKey(); final Pair, List>> pair = relatedContentMap.get(key); if (pair != null) { + final List contentList = new ArrayList<>(); final String content = pair.getFirst().get(toLowerCase(query)); if (StringUtil.isNotBlank(content)) { - return content; + contentList.add(content); } for (final Pair regexData : pair.getSecond()) { if (regexData.getFirst().matcher(query).matches()) { - return regexData.getSecond().replace(queryPlaceHolder, query); + contentList.add(regexData.getSecond().replace(queryPlaceHolder, query)); } } + return contentList.toArray(new String[contentList.size()]); } - return StringUtil.EMPTY; + return StringUtil.EMPTY_STRINGS; } private String toLowerCase(final String term) { diff --git a/src/main/resources/fess_indices/.fess_config/related_content.json b/src/main/resources/fess_indices/.fess_config/related_content.json index 293431162..1b404b299 100644 --- a/src/main/resources/fess_indices/.fess_config/related_content.json +++ b/src/main/resources/fess_indices/.fess_config/related_content.json @@ -16,6 +16,9 @@ "virtualHost": { "type": "keyword" }, + "sortOrder": { + "type": "integer" + }, "createdBy": { "type": "keyword" }, diff --git a/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_details.jsp b/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_details.jsp index e70ebfc4d..7eb322f9f 100644 --- a/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_details.jsp +++ b/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_details.jsp @@ -59,6 +59,11 @@ key="labels.related_content_content" /> ${f:h(content)} + + + ${f:h(sortOrder)} + diff --git a/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_edit.jsp b/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_edit.jsp index a916ede2e..4c921a8e6 100644 --- a/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_edit.jsp +++ b/src/main/webapp/WEB-INF/view/admin/relatedcontent/admin_relatedcontent_edit.jsp @@ -60,6 +60,14 @@ +
+ +
+ + +
+
diff --git a/src/main/webapp/WEB-INF/view/search.jsp b/src/main/webapp/WEB-INF/view/search.jsp index 42ce1822d..dc70562c7 100644 --- a/src/main/webapp/WEB-INF/view/search.jsp +++ b/src/main/webapp/WEB-INF/view/search.jsp @@ -131,13 +131,13 @@
- +
- ${relatedContent} + ${item}
-
+