This is an automated email from the ASF dual-hosted git repository. nightowl888 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit f5652edbe6016d776e7500de2347ff4bccac1bbf Author: Shad Storhaug <[email protected]> AuthorDate: Tue Sep 3 12:32:33 2019 +0700 Lucene.Net.Analysis.Phonetic: Changed language algorithms to use static constants for CultureInfo instead of creating them on the fly (for performance) --- src/Lucene.Net.Analysis.Phonetic/Language/Caverphone2.cs | 4 +++- src/Lucene.Net.Analysis.Phonetic/Language/ColognePhonetic.cs | 4 +++- src/Lucene.Net.Analysis.Phonetic/Language/DoubleMetaphone.cs | 4 +++- .../Language/MatchRatingApproachEncoder.cs | 4 +++- src/Lucene.Net.Analysis.Phonetic/Language/Metaphone.cs | 6 ++++-- src/Lucene.Net.Analysis.Phonetic/Language/SoundexUtils.cs | 6 ++++-- 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/Caverphone2.cs b/src/Lucene.Net.Analysis.Phonetic/Language/Caverphone2.cs index cec7388..3a5f866 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/Caverphone2.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/Caverphone2.cs @@ -37,6 +37,8 @@ namespace Lucene.Net.Analysis.Phonetic.Language { private static readonly string TEN_1 = "1111111111"; + private static readonly CultureInfo LOCALE_ENGLISH = new CultureInfo("en"); + /// <summary> /// Encodes the given string into a Caverphone 2.0 value. /// </summary> @@ -51,7 +53,7 @@ namespace Lucene.Net.Analysis.Phonetic.Language } // 1. Convert to lowercase - txt = new CultureInfo("en").TextInfo.ToLower(txt); + txt = LOCALE_ENGLISH.TextInfo.ToLower(txt); // 2. Remove anything not A-Z txt = Regex.Replace(txt, "[^a-z]", ""); diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/ColognePhonetic.cs b/src/Lucene.Net.Analysis.Phonetic/Language/ColognePhonetic.cs index d2cf78e..776f869 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/ColognePhonetic.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/ColognePhonetic.cs @@ -473,12 +473,14 @@ namespace Lucene.Net.Analysis.Phonetic.Language return GetColognePhonetic(text1).Equals(GetColognePhonetic(text2), StringComparison.Ordinal); } + private static readonly CultureInfo LOCALE_GERMAN = new CultureInfo("de"); + /// <summary> /// Converts the string to upper case and replaces germanic characters as defined in <see cref="PREPROCESS_MAP"/>. /// </summary> private string Preprocess(string text) { - text = new CultureInfo("de").TextInfo.ToUpper(text); + text = LOCALE_GERMAN.TextInfo.ToUpper(text); char[] chrs = text.ToCharArray(); diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/DoubleMetaphone.cs b/src/Lucene.Net.Analysis.Phonetic/Language/DoubleMetaphone.cs index 8f023de..8fabdb0 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/DoubleMetaphone.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/DoubleMetaphone.cs @@ -1118,6 +1118,8 @@ namespace Lucene.Net.Analysis.Phonetic.Language return result; } + private static readonly CultureInfo LOCALE_ENGLISH = new CultureInfo("en"); + /// <summary> /// Cleans the input. /// </summary> @@ -1132,7 +1134,7 @@ namespace Lucene.Net.Analysis.Phonetic.Language { return null; } - return new CultureInfo("en").TextInfo.ToUpper(input); + return LOCALE_ENGLISH.TextInfo.ToUpper(input); } /// <summary> diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/MatchRatingApproachEncoder.cs b/src/Lucene.Net.Analysis.Phonetic/Language/MatchRatingApproachEncoder.cs index c30e571..e67deed 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/MatchRatingApproachEncoder.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/MatchRatingApproachEncoder.cs @@ -70,6 +70,8 @@ namespace Lucene.Net.Analysis.Phonetic.Language new string[] { "BB", "CC", "DD", "FF", "GG", "HH", "JJ", "KK", "LL", "MM", "NN", "PP", "QQ", "RR", "SS", "TT", "VV", "WW", "XX", "YY", "ZZ" }; + private static readonly CultureInfo LOCALE_ENGLISH = new CultureInfo("en"); + /// <summary> /// Cleans up a name: 1. Upper-cases everything 2. Removes some common punctuation 3. Removes accents 4. Removes any /// spaces. @@ -78,7 +80,7 @@ namespace Lucene.Net.Analysis.Phonetic.Language /// <returns>The cleaned name.</returns> internal string CleanName(string name) { - string upperName = new CultureInfo("en").TextInfo.ToUpper(name); + string upperName = LOCALE_ENGLISH.TextInfo.ToUpper(name); string[] charsToTrim = { "\\-", "[&]", "\\'", "\\.", "[\\,]" }; foreach (string str in charsToTrim) diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/Metaphone.cs b/src/Lucene.Net.Analysis.Phonetic/Language/Metaphone.cs index 31cb297..6964576 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/Metaphone.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/Metaphone.cs @@ -78,6 +78,8 @@ namespace Lucene.Net.Analysis.Phonetic.Language { } + private static readonly CultureInfo LOCALE_ENGLISH = new CultureInfo("en"); + /// <summary> /// Find the metaphone value of a string. This is similar to the /// soundex algorithm, but better at finding similar sounding words. @@ -97,10 +99,10 @@ namespace Lucene.Net.Analysis.Phonetic.Language // single character is itself if (txt.Length == 1) { - return new CultureInfo("en").TextInfo.ToUpper(txt); + return LOCALE_ENGLISH.TextInfo.ToUpper(txt); } - char[] inwd = new CultureInfo("en").TextInfo.ToUpper(txt).ToCharArray(); + char[] inwd = LOCALE_ENGLISH.TextInfo.ToUpper(txt).ToCharArray(); StringBuilder local = new StringBuilder(40); // manipulate StringBuilder code = new StringBuilder(10); // output diff --git a/src/Lucene.Net.Analysis.Phonetic/Language/SoundexUtils.cs b/src/Lucene.Net.Analysis.Phonetic/Language/SoundexUtils.cs index e6079c2..3b9512d 100644 --- a/src/Lucene.Net.Analysis.Phonetic/Language/SoundexUtils.cs +++ b/src/Lucene.Net.Analysis.Phonetic/Language/SoundexUtils.cs @@ -30,6 +30,8 @@ namespace Lucene.Net.Analysis.Phonetic.Language /// </summary> internal sealed class SoundexUtils { + private static readonly CultureInfo LOCALE_ENGLISH = new CultureInfo("en"); + /// <summary> /// Cleans up the input string before Soundex processing by only returning /// upper case letters. @@ -54,9 +56,9 @@ namespace Lucene.Net.Analysis.Phonetic.Language } if (count == len) { - return new CultureInfo("en").TextInfo.ToUpper(str); + return LOCALE_ENGLISH.TextInfo.ToUpper(str); } - return new CultureInfo("en").TextInfo.ToUpper(new string(chars, 0, count)); + return LOCALE_ENGLISH.TextInfo.ToUpper(new string(chars, 0, count)); } /// <summary>
