diff --git a/src/main/java/org/codelibs/fess/helper/QueryHelper.java b/src/main/java/org/codelibs/fess/helper/QueryHelper.java index 21885c47d737a0349df4d09023cef286d1129950..f80bb4dfb36508992a6dd481170f4c625df3100f 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 687da01e9e9f1377605a0ece5cce6760f1ee666c..a1635c994f5e36265f92b4aef987ba757562f07e 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 = "<em>"; @@ -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<String, Object> 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 7150c3ab53107dc3495e76370d881c2a5c3b0da5..fe8513c9a6ee2e3aca77bc34934afa7177cb3b77 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'. <br> + * The value is, e.g. hl_content,digest <br> + * @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'. <br> * The value is, e.g. 100000 <br> @@ -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, "<strong>"); defaultMap.put(FessConfig.QUERY_HIGHLIGHT_TAG_POST, "</strong>"); + 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 52a5ef006d983411b36998306934d807b29964a3..8867aca71dd777e918ea171e3e0074ce39b96302 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 af93f6252bd8954846f690859968403af4c34858..83d17cdd70bb0ef0d13390f84490bf5a3b84d1c8 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=<strong> query.highlight.tag.post=</strong> +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 cfee6d08e8f7dafca76ac4deed3cd69c17e9bf18..a1ea51a5517f59f137618bc0a6caea2117c777c7 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 @@ <c:forEach var="doc" varStatus="s" items="${documentItems}"> <li class="col-sm-12"> <h3 class="title"> - <a href="${doc.url_link}">${f:h(doc.content_title)}</a> + <a href="${doc.url_link}">${doc.content_title}</a> </h3> <div class="body col-sm-10"> ${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)}"> <i class="fa fa-trash"></i> <la:message key="labels.search_list_button_delete" /> diff --git a/src/main/webapp/WEB-INF/view/searchResults.jsp b/src/main/webapp/WEB-INF/view/searchResults.jsp index f71bab0489dd719867af6d9ac835ac64d7ae4658..ce2e4d7c1a2959468fa0a6c0fd2a49eae87a968d 100644 --- a/src/main/webapp/WEB-INF/view/searchResults.jsp +++ b/src/main/webapp/WEB-INF/view/searchResults.jsp @@ -36,7 +36,7 @@ <div> <h3 class="title ellipsis media-heading"> <a class="link" href="${doc.url_link}" data-uri="${doc.url_link}" - data-id="${doc.doc_id}" data-order="${s.index}">${f:h(doc.content_title)}</a> + data-id="${doc.doc_id}" data-order="${s.index}">${doc.content_title}</a> </h3> <div class="body"> <div>