diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 21885c47d..f80bb4dfb 100644 --- a/src/main/java/org/codelibs/fess/helper/QueryHelper.java +++ b/src/main/java/org/codelibs/fess/helper/QueryHelper.java @@ -187,7 +187,9 @@ public class QueryHelper { fessConfig.getIndexFieldCache()); } if (highlightedFields == null) { - highlightedFields = fessConfig.getQueryAdditionalHighlightedFields(fessConfig.getIndexFieldContent()); + highlightedFields = fessConfig.getQueryAdditionalHighlightedFields( // + fessConfig.getIndexFieldTitle(), // + fessConfig.getIndexFieldContent()); } if (searchFields == null) { searchFields = fessConfig.getQueryAdditionalSearchFields(// diff --git a/src/main/java/org/codelibs/fess/helper/ViewHelper.java b/src/main/java/org/codelibs/fess/helper/ViewHelper.java index 687da01e9..a1635c994 100644 --- a/src/main/java/org/codelibs/fess/helper/ViewHelper.java +++ b/src/main/java/org/codelibs/fess/helper/ViewHelper.java @@ -106,7 +106,7 @@ public class ViewHelper { public String urlLinkEncoding = Constants.UTF_8; - public String[] highlightedFields = new String[] { "hl_content", "digest" }; + protected String[] highlightedFields; public String originalHighlightTagPre = ""; @@ -143,16 +143,25 @@ public class ViewHelper { escapedHighlightPost = LaFunctions.h(originalHighlightTagPost); highlightTagPre = fessConfig.getQueryHighlightTagPre(); highlightTagPost = fessConfig.getQueryHighlightTagPost(); + highlightedFields = fessConfig.getQueryHighlightContentDescriptionFieldsAsArray(); } public String getContentTitle(final Map document) { final FessConfig fessConfig = ComponentUtil.getFessConfig(); - String title = DocumentUtil.getValue(document, fessConfig.getIndexFieldTitle(), String.class); + String title = + DocumentUtil.getValue(document, ComponentUtil.getQueryHelper().getHighlightPrefix() + fessConfig.getIndexFieldTitle(), + String.class); if (StringUtil.isBlank(title)) { - title = DocumentUtil.getValue(document, fessConfig.getIndexFieldFilename(), String.class); + title = DocumentUtil.getValue(document, fessConfig.getIndexFieldTitle(), String.class); if (StringUtil.isBlank(title)) { - title = DocumentUtil.getValue(document, fessConfig.getIndexFieldUrl(), String.class); + title = DocumentUtil.getValue(document, fessConfig.getIndexFieldFilename(), String.class); + if (StringUtil.isBlank(title)) { + title = DocumentUtil.getValue(document, fessConfig.getIndexFieldUrl(), String.class); + } } + title = LaFunctions.h(title); + } else { + title = escapeHighlight(title).replaceAll("\\.\\.\\.$", StringUtil.EMPTY); } final int size = fessConfig.getResponseMaxTitleLengthAsInteger(); if (size > -1) { diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java index 7150c3ab5..fe8513c9a 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java @@ -578,6 +578,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction /** The key of the configuration. e.g. </strong> */ String QUERY_HIGHLIGHT_TAG_POST = "query.highlight.tag.post"; + /** The key of the configuration. e.g. hl_content,digest */ + String QUERY_HIGHLIGHT_CONTENT_DESCRIPTION_FIELDS = "query.highlight.content.description.fields"; + /** The key of the configuration. e.g. 100000 */ String QUERY_MAX_SEARCH_RESULT_OFFSET = "query.max.search.result.offset"; @@ -3019,6 +3022,13 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction */ String getQueryHighlightTagPost(); + /** + * Get the value for the key 'query.highlight.content.description.fields'.
+ * The value is, e.g. hl_content,digest
+ * @return The value of found property. (NotNull: if not found, exception but basically no way) + */ + String getQueryHighlightContentDescriptionFields(); + /** * Get the value for the key 'query.max.search.result.offset'.
* The value is, e.g. 100000
@@ -6545,6 +6555,10 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction return get(FessConfig.QUERY_HIGHLIGHT_TAG_POST); } + public String getQueryHighlightContentDescriptionFields() { + return get(FessConfig.QUERY_HIGHLIGHT_CONTENT_DESCRIPTION_FIELDS); + } + public String getQueryMaxSearchResultOffset() { return get(FessConfig.QUERY_MAX_SEARCH_RESULT_OFFSET); } @@ -8132,6 +8146,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction defaultMap.put(FessConfig.QUERY_HIGHLIGHT_TYPE, "fvh"); defaultMap.put(FessConfig.QUERY_HIGHLIGHT_TAG_PRE, ""); defaultMap.put(FessConfig.QUERY_HIGHLIGHT_TAG_POST, ""); + defaultMap.put(FessConfig.QUERY_HIGHLIGHT_CONTENT_DESCRIPTION_FIELDS, "hl_content,digest"); defaultMap.put(FessConfig.QUERY_MAX_SEARCH_RESULT_OFFSET, "100000"); defaultMap.put(FessConfig.QUERY_ADDITIONAL_RESPONSE_FIELDS, ""); defaultMap.put(FessConfig.QUERY_ADDITIONAL_API_RESPONSE_FIELDS, ""); diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java index 52a5ef006..8867aca71 100644 --- a/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java +++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java @@ -1821,4 +1821,12 @@ public interface FessProp { } return Arrays.stream(patterns).anyMatch(p -> p.matcher(referer).matches()); } + + String getQueryHighlightContentDescriptionFields(); + + public default String[] getQueryHighlightContentDescriptionFieldsAsArray() { + return split(getQueryHighlightContentDescriptionFields(), ",").get( + stream -> stream.filter(StringUtil::isNotBlank).map(String::trim).toArray(n -> new String[n])); + } + } diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties index af93f6252..83d17cdd7 100644 --- a/src/main/resources/fess_config.properties +++ b/src/main/resources/fess_config.properties @@ -289,6 +289,7 @@ query.highlight.number.of.fragments=3 query.highlight.type=fvh query.highlight.tag.pre= query.highlight.tag.post= +query.highlight.content.description.fields=hl_content,digest query.max.search.result.offset=100000 query.additional.response.fields= query.additional.api.response.fields= diff --git a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp index cfee6d08e..a1ea51a55 100644 --- a/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp +++ b/src/main/webapp/WEB-INF/view/admin/searchlist/admin_searchlist.jsp @@ -86,7 +86,7 @@
  • - ${f:h(doc.content_title)} + ${doc.content_title}

    ${doc.content_description} @@ -102,7 +102,7 @@ class="btn btn-xs btn-danger" data-toggle="modal" data-target="#confirmToDelete" data-docid="${f:u(doc.doc_id)}" - data-title="${f:h(doc.content_title)}" + data-title="${doc.content_title}" data-url="${f:h(doc.url_link)}"> diff --git a/src/main/webapp/WEB-INF/view/searchResults.jsp b/src/main/webapp/WEB-INF/view/searchResults.jsp index f71bab048..ce2e4d7c1 100644 --- a/src/main/webapp/WEB-INF/view/searchResults.jsp +++ b/src/main/webapp/WEB-INF/view/searchResults.jsp @@ -36,7 +36,7 @@

    ${f:h(doc.content_title)} + data-id="${doc.doc_id}" data-order="${s.index}">${doc.content_title}