Class: RailsErrorDashboard::Services::SimilarityCalculator
- Inherits:
-
Object
- Object
- RailsErrorDashboard::Services::SimilarityCalculator
- Defined in:
- lib/rails_error_dashboard/services/similarity_calculator.rb
Overview
Calculates similarity scores between errors using multiple algorithms
Combines:
-
Backtrace similarity (Jaccard index on stack frames) - 70% weight
-
Message similarity (Levenshtein distance) - 30% weight
Returns a similarity score from 0.0 (completely different) to 1.0 (identical)
Class Method Summary collapse
-
.call(error1, error2) ⇒ Float
Calculate similarity between two errors.
Instance Method Summary collapse
- #calculate ⇒ Object
-
#initialize(error1, error2) ⇒ SimilarityCalculator
constructor
A new instance of SimilarityCalculator.
Constructor Details
#initialize(error1, error2) ⇒ SimilarityCalculator
Returns a new instance of SimilarityCalculator.
22 23 24 25 |
# File 'lib/rails_error_dashboard/services/similarity_calculator.rb', line 22 def initialize(error1, error2) @error1 = error1 @error2 = error2 end |
Class Method Details
.call(error1, error2) ⇒ Float
Calculate similarity between two errors
18 19 20 |
# File 'lib/rails_error_dashboard/services/similarity_calculator.rb', line 18 def self.call(error1, error2) new(error1, error2).calculate end |
Instance Method Details
#calculate ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rails_error_dashboard/services/similarity_calculator.rb', line 27 def calculate # Quick return for same error return 1.0 if @error1.id == @error2.id # Quick return for different platforms (per user config - same platform only) return 0.0 if different_platforms? backtrace_score = calculate_backtrace_similarity = # Weighted combination: backtrace 70%, message 30% (backtrace_score * 0.7) + ( * 0.3) end |