Shinsuke Sugaya 6 éve
szülő
commit
ab884df75d

+ 3 - 1
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 = "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 = "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_PAGE_SIZE = 20;
 
 
     public static final int DEFAULT_CURRENT_PAGE_NUMBER = 1;
     public static final int DEFAULT_CURRENT_PAGE_NUMBER = 1;

+ 33 - 6
src/main/java/org/codelibs/fess/app/service/SearchLogService.java

@@ -95,27 +95,54 @@ public class SearchLogService {
 
 
     public List<?> getSearchLogList(final SearchLogPager pager) {
     public List<?> getSearchLogList(final SearchLogPager pager) {
         final EsPagingResultBean<?> list;
         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 -> {
             list = (EsPagingResultBean<?>) clickLogBhv.selectPage(cb -> {
                 cb.paging(pager.getPageSize(), pager.getCurrentPageNumber());
                 cb.paging(pager.getPageSize(), pager.getCurrentPageNumber());
                 cb.query().addOrderBy_RequestedAt_Desc();
                 cb.query().addOrderBy_RequestedAt_Desc();
                 createClickLogCondition(pager, cb);
                 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 -> {
             list = (EsPagingResultBean<?>) clickLogBhv.selectPage(cb -> {
                 cb.fetchFirst(0);
                 cb.fetchFirst(0);
                 createClickLogCondition(pager, cb);
                 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<? extends Terms.Bucket> buckets = agg.getBuckets();
+            updatePagerByAgg(pager, buckets.size());
+            return buckets.stream().map(e -> {
+                final Map<String, Object> 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)) {
         } else if (SearchLogPager.LOG_TYPE_FAVORITE.equalsIgnoreCase(pager.logType)) {
             list = (EsPagingResultBean<?>) favoriteLogBhv.selectPage(cb -> {
             list = (EsPagingResultBean<?>) favoriteLogBhv.selectPage(cb -> {
                 cb.paging(pager.getPageSize(), pager.getCurrentPageNumber());
                 cb.paging(pager.getPageSize(), pager.getCurrentPageNumber());
                 cb.query().addOrderBy_CreatedAt_Desc();
                 cb.query().addOrderBy_CreatedAt_Desc();
                 createFavoriteLogCondition(pager, cb);
                 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<? extends Terms.Bucket> buckets = agg.getBuckets();
+            updatePagerByAgg(pager, buckets.size());
+            return buckets.stream().map(e -> {
+                final Map<String, Object> 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)) {
         } else if (SearchLogPager.LOG_TYPE_SEARCH_COUNT_HOUR.equalsIgnoreCase(pager.logType)) {
             list = (EsPagingResultBean<?>) searchLogBhv.selectPage(cb -> {
             list = (EsPagingResultBean<?>) searchLogBhv.selectPage(cb -> {
                 cb.fetchFirst(0);
                 cb.fetchFirst(0);

+ 9 - 0
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 */
     /** 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}";
     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 */
     /** The key of the message: Message */
     public static final String LABELS_searchlog_log_message = "{labels.searchlog_log_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 */
     /** The key of the message: Delete */
     public static final String LABELS_searchlog_configuration_button_delete = "{labels.searchlog_configuration_button_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 */
     /** The key of the message: Query ID */
     public static final String LABELS_searchlog_queryid = "{labels.searchlog_queryid}";
     public static final String LABELS_searchlog_queryid = "{labels.searchlog_queryid}";
 
 

+ 2 - 0
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_user_day=User by Day
 labels.searchlog_log_type_search_reqtimeavg_hour=Request Time Avg. by Hour
 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_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_log_message=Message
 labels.searchlog_requested_time=Time
 labels.searchlog_requested_time=Time
 labels.searchlog_value=Value
 labels.searchlog_value=Value

+ 2 - 0
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_user_day=User by Day
 labels.searchlog_log_type_search_reqtimeavg_hour=Request Time Avg. by Hour
 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_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_log_message=Message
 labels.searchlog_requested_time=Time
 labels.searchlog_requested_time=Time
 labels.searchlog_value=Value
 labels.searchlog_value=Value

+ 2 - 0
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_user_day=ユーザー数/日
 labels.searchlog_log_type_search_reqtimeavg_hour=リクエスト平均時間/時
 labels.searchlog_log_type_search_reqtimeavg_hour=リクエスト平均時間/時
 labels.searchlog_log_type_search_reqtimeavg_day=リクエスト平均時間/日
 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_log_message=メッセージ
 labels.searchlog_requested_time=時刻
 labels.searchlog_requested_time=時刻
 labels.searchlog_value=値
 labels.searchlog_value=値

+ 3 - 1
src/main/webapp/WEB-INF/view/admin/searchlog/admin_searchlog.jsp

@@ -61,6 +61,8 @@
 												<la:option value="search_reqtimeavg_day_agg"><la:message key="labels.searchlog_log_type_search_reqtimeavg_day" /></la:option>
 												<la:option value="search_reqtimeavg_day_agg"><la:message key="labels.searchlog_log_type_search_reqtimeavg_day" /></la:option>
 												<la:option value="search_keyword_agg"><la:message key="labels.searchlog_log_type_search_keyword" /></la:option>
 												<la:option value="search_keyword_agg"><la:message key="labels.searchlog_log_type_search_keyword" /></la:option>
 												<la:option value="search_zerohit_agg"><la:message key="labels.searchlog_log_type_search_zerohit" /></la:option>
 												<la:option value="search_zerohit_agg"><la:message key="labels.searchlog_log_type_search_zerohit" /></la:option>
+												<la:option value="click_count_agg"><la:message key="labels.searchlog_log_type_click_count" /></la:option>
+												<la:option value="favorite_count_agg"><la:message key="labels.searchlog_log_type_favorite_count" /></la:option>
 											</la:select>
 											</la:select>
 										</div>
 										</div>
 									</div>
 									</div>
@@ -156,7 +158,7 @@
 														<th class="col-sm-3"><la:message
 														<th class="col-sm-3"><la:message
 																key="labels.searchlog_value" /></th>
 																key="labels.searchlog_value" /></th>
 														</c:if>
 														</c:if>
-														<c:if test="${logType.startsWith('search_keyword_') or logType.startsWith('search_zerohit_')}">
+														<c:if test="${logType.startsWith('search_keyword_') or logType.startsWith('search_zerohit_')} or logType.endsWith('_count_agg')}">
 														<th><la:message
 														<th><la:message
 																key="labels.searchlog_value" /></th>
 																key="labels.searchlog_value" /></th>
 														<th class="col-sm-3"><la:message
 														<th class="col-sm-3"><la:message