MCPcopy Create free account
hub / github.com/GoSimplicity/LinkMe / enqueueScore

Method enqueueScore

internal/service/ranking.go:233–259  ·  view source on GitHub ↗

enqueueScore 将分数加入优先队列

(queue *priorityqueue.PriorityQueue[Score], element Score)

Source from the content-addressed store, hash-verified

231
232// enqueueScore 将分数加入优先队列
233func (rs *rankingService) enqueueScore(queue *priorityqueue.PriorityQueue[Score], element Score) {
234 if queue == nil {
235 return
236 }
237
238 // 尝试直接入队
239 if err := queue.Enqueue(element); err == nil {
240 return
241 }
242
243 // 队列已满,需要与最小元素比较
244 minElement, err := queue.Dequeue()
245 if err != nil {
246 rs.l.Error("出队列失败", zap.Error(err))
247 return
248 }
249
250 // 选择较大的元素重新入队
251 toEnqueue := element
252 if minElement.value > element.value {
253 toEnqueue = minElement
254 }
255
256 if err := queue.Enqueue(toEnqueue); err != nil {
257 rs.l.Error("入队列失败", zap.Error(err))
258 }
259}
260
261// buildResults 构建结果列表
262func (rs *rankingService) buildResults(queue *priorityqueue.PriorityQueue[Score]) []domain.Post {

Callers 1

processBatchMethod · 0.95

Calls 2

EnqueueMethod · 0.80
DequeueMethod · 0.80

Tested by

no test coverage detected