MCPcopy Create free account
hub / github.com/PatrickSys/codebase-context / buildQueryVariants

Method buildQueryVariants

src/core/search.ts:427–459  ·  view source on GitHub ↗
(query: string, maxExpansions: number)

Source from the content-addressed store, hash-verified

425 }
426
427 private buildQueryVariants(query: string, maxExpansions: number): QueryVariant[] {
428 const variants: QueryVariant[] = [{ query, weight: 1 }];
429 if (maxExpansions <= 0) return variants;
430
431 const normalized = query.toLowerCase();
432 const terms = new Set(this.normalizeQueryTerms(query));
433
434 for (const hint of QUERY_EXPANSION_HINTS) {
435 if (!hint.pattern.test(query)) continue;
436 for (const term of hint.terms) {
437 if (!normalized.includes(term)) {
438 terms.add(term);
439 }
440 }
441 }
442
443 const addedTerms = Array.from(terms).filter((term) => !normalized.includes(term));
444 if (addedTerms.length === 0) return variants;
445
446 const firstExpansion = `${query} ${addedTerms.slice(0, 6).join(' ')}`.trim();
447 if (firstExpansion !== query) {
448 variants.push({ query: firstExpansion, weight: 0.35 });
449 }
450
451 if (maxExpansions > 1 && addedTerms.length > 6) {
452 const secondExpansion = `${query} ${addedTerms.slice(6, 12).join(' ')}`.trim();
453 if (secondExpansion !== query) {
454 variants.push({ query: secondExpansion, weight: 0.25 });
455 }
456 }
457
458 return variants.slice(0, 1 + maxExpansions);
459 }
460
461 private isTemplateOrStyleFile(filePath: string): boolean {
462 const ext = path.extname(filePath).toLowerCase();

Callers 1

searchMethod · 0.95

Calls 2

normalizeQueryTermsMethod · 0.95
addMethod · 0.45

Tested by

no test coverage detected