UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

45 lines (44 loc) 1.5 kB
/** * contextBoost — 会话上下文感知排序加成 * * 从 SearchEngine._contextBoost 统一提取。 * * 规则: * - 会话历史关键词重叠 → +20% (最多 5 个词满分) * - 语言匹配 → +10% * * @module contextBoost */ import { tokenize } from './tokenizer.js'; export function contextBoost(items, context = {}) { const { sessionHistory = [], language } = context; if (!sessionHistory.length) { return items; } // 收集会话中的关键词 const sessionKeywords = new Set(); for (const turn of sessionHistory) { const tokens = tokenize(turn.content || turn.rawInput || ''); for (const t of tokens) { sessionKeywords.add(t); } } return items .map((item) => { let boost = 0; // 会话上下文匹配 const textTokens = tokenize([item.title, item.trigger, item.content].filter(Boolean).join(' ')); const overlap = textTokens.filter((t) => sessionKeywords.has(t)).length; if (overlap > 0) { boost += 0.2 * Math.min(overlap / 5, 1); } // 语言匹配 if (language && item.language === language) { boost += 0.1; } const baseScore = item.rankerScore || item.coarseScore || item.score || 0; const contextScore = baseScore * (1 + boost); return { ...item, contextScore, contextBoost: boost }; }) .sort((a, b) => b.contextScore - a.contextScore); }