diff --git a/src/main/java/org/codelibs/fess/app/pager/SearchLogPager.java b/src/main/java/org/codelibs/fess/app/pager/SearchLogPager.java index d98adbfcf..c553af7c5 100644 --- a/src/main/java/org/codelibs/fess/app/pager/SearchLogPager.java +++ b/src/main/java/org/codelibs/fess/app/pager/SearchLogPager.java @@ -46,10 +46,12 @@ public class SearchLogPager implements Serializable { public static final String LOG_TYPE_CLICK = "click"; - public static final String LOG_TYPE_CLICK_TOP = "click_top_agg"; + public static final String LOG_TYPE_CLICK_COUNT = "click_count_agg"; public static final String LOG_TYPE_FAVORITE = "favorite"; + public static final String LOG_TYPE_FAVORITE_COUNT = "favorite_count_agg"; + public static final int DEFAULT_PAGE_SIZE = 20; public static final int DEFAULT_CURRENT_PAGE_NUMBER = 1; diff --git a/src/main/java/org/codelibs/fess/app/service/SearchLogService.java b/src/main/java/org/codelibs/fess/app/service/SearchLogService.java index d8248fd92..f894d687c 100644 --- a/src/main/java/org/codelibs/fess/app/service/SearchLogService.java +++ b/src/main/java/org/codelibs/fess/app/service/SearchLogService.java @@ -95,27 +95,54 @@ public class SearchLogService { public List getSearchLogList(final SearchLogPager pager) { final EsPagingResultBean list; - if (SearchLogPager.LOG_TYPE_CLICK.equalsIgnoreCase(pager.logType) - || SearchLogPager.LOG_TYPE_CLICK_TOP.equalsIgnoreCase(pager.logType)) { + if (SearchLogPager.LOG_TYPE_CLICK.equalsIgnoreCase(pager.logType)) { list = (EsPagingResultBean) clickLogBhv.selectPage(cb -> { cb.paging(pager.getPageSize(), pager.getCurrentPageNumber()); cb.query().addOrderBy_RequestedAt_Desc(); createClickLogCondition(pager, cb); }); - } else if (SearchLogPager.LOG_TYPE_CLICK_TOP.equalsIgnoreCase(pager.logType)) { + } else if (SearchLogPager.LOG_TYPE_CLICK_COUNT.equalsIgnoreCase(pager.logType)) { list = (EsPagingResultBean) clickLogBhv.selectPage(cb -> { cb.fetchFirst(0); createClickLogCondition(pager, cb); - cb.aggregation().filter("top_click_filter", null, null, aggs -> { - aggs.setUrl_Count(); - }); + cb.aggregation().setUrl_Terms(SearchLogPager.LOG_TYPE_CLICK_COUNT, op -> { + op.size(pager.getPageSize()); + }, null); }); + final Terms agg = list.getAggregations().get(SearchLogPager.LOG_TYPE_CLICK_COUNT); + final List buckets = agg.getBuckets(); + updatePagerByAgg(pager, buckets.size()); + return buckets.stream().map(e -> { + final Map map = new HashMap<>(); + map.put(ID, Base64.getUrlEncoder().encodeToString(e.getKeyAsString().getBytes(StandardCharsets.UTF_8))); + map.put(KEY, e.getKeyAsString()); + map.put(COUNT, e.getDocCount()); + return map; + }).collect(Collectors.toList()); } else if (SearchLogPager.LOG_TYPE_FAVORITE.equalsIgnoreCase(pager.logType)) { list = (EsPagingResultBean) favoriteLogBhv.selectPage(cb -> { cb.paging(pager.getPageSize(), pager.getCurrentPageNumber()); cb.query().addOrderBy_CreatedAt_Desc(); createFavoriteLogCondition(pager, cb); }); + } else if (SearchLogPager.LOG_TYPE_FAVORITE_COUNT.equalsIgnoreCase(pager.logType)) { + list = (EsPagingResultBean) favoriteLogBhv.selectPage(cb -> { + cb.fetchFirst(0); + createFavoriteLogCondition(pager, cb); + cb.aggregation().setUrl_Terms(SearchLogPager.LOG_TYPE_FAVORITE_COUNT, op -> { + op.size(pager.getPageSize()); + }, null); + }); + final Terms agg = list.getAggregations().get(SearchLogPager.LOG_TYPE_FAVORITE_COUNT); + final List buckets = agg.getBuckets(); + updatePagerByAgg(pager, buckets.size()); + return buckets.stream().map(e -> { + final Map map = new HashMap<>(); + map.put(ID, Base64.getUrlEncoder().encodeToString(e.getKeyAsString().getBytes(StandardCharsets.UTF_8))); + map.put(KEY, e.getKeyAsString()); + map.put(COUNT, e.getDocCount()); + return map; + }).collect(Collectors.toList()); } else if (SearchLogPager.LOG_TYPE_SEARCH_COUNT_HOUR.equalsIgnoreCase(pager.logType)) { list = (EsPagingResultBean) searchLogBhv.selectPage(cb -> { cb.fetchFirst(0); diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java index 5cd5d9d3b..f9705e434 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java @@ -2862,6 +2862,12 @@ public class FessLabels extends UserMessages { /** The key of the message: Request Time Avg. by Day */ public static final String LABELS_searchlog_log_type_search_reqtimeavg_day = "{labels.searchlog_log_type_search_reqtimeavg_day}"; + /** The key of the message: Click Count */ + public static final String LABELS_searchlog_log_type_click_count = "{labels.searchlog_log_type_click_count}"; + + /** The key of the message: Favorite Count */ + public static final String LABELS_searchlog_log_type_favorite_count = "{labels.searchlog_log_type_favorite_count}"; + /** The key of the message: Message */ public static final String LABELS_searchlog_log_message = "{labels.searchlog_log_message}"; @@ -2889,6 +2895,9 @@ public class FessLabels extends UserMessages { /** The key of the message: Delete */ public static final String LABELS_searchlog_configuration_button_delete = "{labels.searchlog_configuration_button_delete}"; + /** The key of the message: Size */ + public static final String LABELS_searchlog_size = "{labels.searchlog_size}"; + /** The key of the message: Query ID */ public static final String LABELS_searchlog_queryid = "{labels.searchlog_queryid}"; diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties index 89ac301af..a9a311a63 100644 --- a/src/main/resources/fess_label.properties +++ b/src/main/resources/fess_label.properties @@ -945,6 +945,8 @@ labels.searchlog_log_type_search_user_hour=User by Hour labels.searchlog_log_type_search_user_day=User by Day labels.searchlog_log_type_search_reqtimeavg_hour=Request Time Avg. by Hour labels.searchlog_log_type_search_reqtimeavg_day=Request Time Avg. by Day +labels.searchlog_log_type_click_count=Click Count +labels.searchlog_log_type_favorite_count=Favorite Count labels.searchlog_log_message=Message labels.searchlog_requested_time=Time labels.searchlog_value=Value diff --git a/src/main/resources/fess_label_en.properties b/src/main/resources/fess_label_en.properties index 44a7febdd..e4e88d3de 100644 --- a/src/main/resources/fess_label_en.properties +++ b/src/main/resources/fess_label_en.properties @@ -945,6 +945,8 @@ labels.searchlog_log_type_search_user_hour=User by Hour labels.searchlog_log_type_search_user_day=User by Day labels.searchlog_log_type_search_reqtimeavg_hour=Request Time Avg. by Hour labels.searchlog_log_type_search_reqtimeavg_day=Request Time Avg. by Day +labels.searchlog_log_type_click_count=Click Count +labels.searchlog_log_type_favorite_count=Favorite Count labels.searchlog_log_message=Message labels.searchlog_requested_time=Time labels.searchlog_value=Value diff --git a/src/main/resources/fess_label_ja.properties b/src/main/resources/fess_label_ja.properties index 1ef354464..61740471f 100644 --- a/src/main/resources/fess_label_ja.properties +++ b/src/main/resources/fess_label_ja.properties @@ -945,6 +945,8 @@ labels.searchlog_log_type_search_user_hour=ユーザー数/時 labels.searchlog_log_type_search_user_day=ユーザー数/日 labels.searchlog_log_type_search_reqtimeavg_hour=リクエスト平均時間/時 labels.searchlog_log_type_search_reqtimeavg_day=リクエスト平均時間/日 +labels.searchlog_log_type_click_count=クリック数 +labels.searchlog_log_type_favorite_count=お気に入り数 labels.searchlog_log_message=メッセージ labels.searchlog_requested_time=時刻 labels.searchlog_value=値 diff --git a/src/main/webapp/WEB-INF/view/admin/searchlog/admin_searchlog.jsp b/src/main/webapp/WEB-INF/view/admin/searchlog/admin_searchlog.jsp index f7791dd07..3454cb13e 100644 --- a/src/main/webapp/WEB-INF/view/admin/searchlog/admin_searchlog.jsp +++ b/src/main/webapp/WEB-INF/view/admin/searchlog/admin_searchlog.jsp @@ -61,6 +61,8 @@ + + @@ -156,7 +158,7 @@ - +