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>