You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2019/09/06 09:01:20 UTC

[lucenenet] 10/21: Lucene.Net.Analysis.Phonetic: Changed language algorithms to use static constants for CultureInfo instead of creating them on the fly (for performance)

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 <sh...@shadstorhaug.com>
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>