MCPcopy Index your code
hub / github.com/forloopcodes/contextplus / computeKeywordScore

Function computeKeywordScore

src/core/embeddings.ts:386–396  ·  view source on GitHub ↗
(query: string, queryTerms: Set<string>, doc: SearchDocument, matchedSymbols: string[])

Source from the content-addressed store, hash-verified

384}
385
386function computeKeywordScore(query: string, queryTerms: Set<string>, doc: SearchDocument, matchedSymbols: string[]): number {
387 if (queryTerms.size === 0) return 0;
388 const docText = `${doc.path} ${doc.header} ${doc.symbols.join(" ")} ${doc.content}`;
389 const docTerms = new Set(splitCamelCase(docText));
390 const queryLower = query.trim().toLowerCase();
391 const phraseBoost = queryLower.length > 0 && docText.toLowerCase().includes(queryLower) ? 0.15 : 0;
392 const symbolTerms = new Set(splitCamelCase(matchedSymbols.join(" ")));
393 const termCoverage = getTermCoverage(queryTerms, docTerms);
394 const symbolCoverage = getTermCoverage(queryTerms, symbolTerms);
395 return clamp01(termCoverage * 0.65 + symbolCoverage * 0.2 + phraseBoost);
396}
397
398function computeCombinedScore(semanticScore: number, keywordScore: number, options: ResolvedSearchQueryOptions): number {
399 const semanticComponent = Math.max(semanticScore, 0);

Callers 1

searchMethod · 0.85

Calls 3

splitCamelCaseFunction · 0.85
getTermCoverageFunction · 0.85
clamp01Function · 0.70

Tested by

no test coverage detected