缓存倒排
This commit is contained in:
+15
-2
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user