/** * Pattern Similarity Algorithms * * Calculate similarity between patterns for: * - Pattern matching and recommendation * - Clustering similar patterns * - Measuring cross-project applicability */ export interface Pattern { id: number; name: string; problem: string; solution: string; implementation?: string; project: string; tags?: string[]; metrics?: { before: any; after: any; improvement: string; }; } export interface SimilarityScore { patternId: number; score: number; factors: { problemSimilarity: number; solutionSimilarity: number; contextSimilarity: number; tagOverlap: number; }; } export declare class PatternSimilarity { /** * Calculate similarity between two patterns */ calculateSimilarity(pattern1: Pattern, pattern2: Pattern): number; /** * Calculate detailed similarity factors */ calculateFactors(pattern1: Pattern, pattern2: Pattern): SimilarityScore['factors']; /** * Find similar patterns to a given pattern */ findSimilar(targetPattern: Pattern, candidates: Pattern[], minSimilarity?: number, maxResults?: number): SimilarityScore[]; /** * Find patterns similar to a problem description */ findByProblem(problemDescription: string, patterns: Pattern[], minSimilarity?: number, maxResults?: number): SimilarityScore[]; /** * Calculate text similarity using Jaccard index */ private textSimilarity; /** * Calculate context similarity (project, implementation) */ private contextSimilarity; /** * Calculate tag similarity (Jaccard) */ private tagSimilarity; /** * Tokenize text into normalized tokens */ private tokenize; /** * Calculate distance (inverse of similarity) */ calculateDistance(pattern1: Pattern, pattern2: Pattern): number; } /** * Create pattern similarity calculator */ export declare function createPatternSimilarity(): PatternSimilarity; //# sourceMappingURL=similarity.d.ts.map