/// <summary> /// Matches the specified config object with this search value. /// </summary> /// <param name="configObject">Configuration object to match.</param> /// <returns> /// Value between 0 and 1, with 1 representing an exact match, 0 representing no match. /// </returns> public float CalculateMatchQuality(ConfigBase configObject) { CultureInfo culture = ServiceRegistration.Get <ILocalization>().CurrentCulture; IEnumerable <string> searchTexts = configObject.GetSearchTexts(); double result = 0; int count = 0; foreach (string text in searchTexts) { string searchText = text.ToLower(culture); if (searchText == _searchText) { result++; } else if (text.Contains(_searchText)) { result += 0.5; } count++; } return((float)(result / count)); }