From e1915c9ddecf808f13222826dbf8703666dc4868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E5=B3=B0?= Date: Mon, 20 Apr 2026 19:08:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=80=92=E6=8E=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- search/server.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/search/server.go b/search/server.go index 47448aa..49153d2 100644 --- a/search/server.go +++ b/search/server.go @@ -54,6 +54,7 @@ type urlKeywordsEntry struct { Title string // 页面标题(从 Redis Snippet 缓存获取) Snippet string // 摘要(从 Redis Snippet 缓存获取) Keywords []urlKeywordInfo // 关键词列表 + UpdatedAt time.Time // 最后更新时间(用于倒序排列) } // urlKeywordInfo 单个关键词信息 @@ -92,10 +93,11 @@ func (c *urlKeywordsCache) Put(url string, title, snippet string, keywords []url e.Keywords = keywords e.Title = title e.Snippet = snippet + e.UpdatedAt = time.Now() entry = e } else { // 新增到队尾 - entry = &urlKeywordsEntry{URL: url, Title: title, Snippet: snippet, Keywords: keywords} + entry = &urlKeywordsEntry{URL: url, Title: title, Snippet: snippet, Keywords: keywords, UpdatedAt: time.Now()} elem := c.order.PushBack(entry) c.items[url] = elem @@ -254,6 +256,12 @@ func (c *urlKeywordsCache) ListAll() []*urlKeywordsEntry { seen[entry.URL] = true } } + + // 按 UpdatedAt 倒序排序(最新在前) + sort.Slice(memEntries, func(i, j int) bool { + return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt) + }) + return memEntries } @@ -290,7 +298,12 @@ func (c *urlKeywordsCache) ListPage(page, pageSize int) []*urlKeywordsEntry { } } - // 分页(从合并数据中按字典序取 page 页) + // 按 UpdatedAt 倒序排序(最新在前) + sort.Slice(memEntries, func(i, j int) bool { + return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt) + }) + + // 分页 total := len(memEntries) offset := (page - 1) * pageSize if offset >= total {