private void CalculateProfiledItemDistance(IPatternDistance calculator, ProfiledItem item, string profileName, ProfileItem profileItem, Pattern visitorPattern) { PatternSpace space = profileItem.PatternSpace; Pattern itemPattern = space.CreatePattern(item.ContentProfile); double distance = defaultDistance; if (visitorPattern != null) { distance = Math.Sqrt(calculator.GetDistance(visitorPattern, itemPattern)); } var correctedDistance = distance; if (correctedDistance < minDistance) { correctedDistance = minDistance; } double gravity = 1.0d / (correctedDistance * correctedDistance); item.ProfiledItemCalculation = new ProfiledItemDistance(distance, gravity); }
public DistanceCalculator() { calculator = new SquaredEuclidianDistance(); }