缓存倒排
This commit is contained in:
+15
-2
@@ -54,6 +54,7 @@ type urlKeywordsEntry struct {
|
|||||||
Title string // 页面标题(从 Redis Snippet 缓存获取)
|
Title string // 页面标题(从 Redis Snippet 缓存获取)
|
||||||
Snippet string // 摘要(从 Redis Snippet 缓存获取)
|
Snippet string // 摘要(从 Redis Snippet 缓存获取)
|
||||||
Keywords []urlKeywordInfo // 关键词列表
|
Keywords []urlKeywordInfo // 关键词列表
|
||||||
|
UpdatedAt time.Time // 最后更新时间(用于倒序排列)
|
||||||
}
|
}
|
||||||
|
|
||||||
// urlKeywordInfo 单个关键词信息
|
// urlKeywordInfo 单个关键词信息
|
||||||
@@ -92,10 +93,11 @@ func (c *urlKeywordsCache) Put(url string, title, snippet string, keywords []url
|
|||||||
e.Keywords = keywords
|
e.Keywords = keywords
|
||||||
e.Title = title
|
e.Title = title
|
||||||
e.Snippet = snippet
|
e.Snippet = snippet
|
||||||
|
e.UpdatedAt = time.Now()
|
||||||
entry = e
|
entry = e
|
||||||
} else {
|
} 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)
|
elem := c.order.PushBack(entry)
|
||||||
c.items[url] = elem
|
c.items[url] = elem
|
||||||
|
|
||||||
@@ -254,6 +256,12 @@ func (c *urlKeywordsCache) ListAll() []*urlKeywordsEntry {
|
|||||||
seen[entry.URL] = true
|
seen[entry.URL] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 按 UpdatedAt 倒序排序(最新在前)
|
||||||
|
sort.Slice(memEntries, func(i, j int) bool {
|
||||||
|
return memEntries[i].UpdatedAt.After(memEntries[j].UpdatedAt)
|
||||||
|
})
|
||||||
|
|
||||||
return memEntries
|
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)
|
total := len(memEntries)
|
||||||
offset := (page - 1) * pageSize
|
offset := (page - 1) * pageSize
|
||||||
if offset >= total {
|
if offset >= total {
|
||||||
|
|||||||
Reference in New Issue
Block a user