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 1835a8ee710b0dc1efd22561cf29b39df79b5c9c Author: Shad Storhaug <[email protected]> AuthorDate: Sun Nov 21 07:48:46 2021 +0700 BUG: Lucene.Net.Suggest.Jaspell.JaspellTernarySearchTree: Lazy initialize a J2N.Randomizer() instance so we hit both paths approximately evenly instead of one path when deleting nodes recursively. --- .../Suggest/Jaspell/JaspellTernarySearchTrie.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs b/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs index 164f97e..ffd844d 100644 --- a/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs +++ b/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs @@ -33,6 +33,7 @@ using System.Globalization; using System.IO; using System.IO.Compression; using System.Text; +using System.Threading; using JCG = J2N.Collections.Generic; namespace Lucene.Net.Search.Suggest.Jaspell @@ -362,6 +363,11 @@ namespace Lucene.Net.Search.Suggest.Jaspell } } + // LUCENENET: .NET has no Math.Random() method, so we need to lazy initialize an instance for this purpose. + // Note that the J2N.Randomizer.Next() method is threadsafe. + private static Random random; + private static Random Random => LazyInitializer.EnsureInitialized(ref random, () => new J2N.Randomizer()); + /// <summary> /// Recursively visits each node to be deleted. /// @@ -433,7 +439,7 @@ namespace Lucene.Net.Search.Suggest.Jaspell TSTNode targetNode; if (deltaHi == deltaLo) { - if (new Random(1).NextDouble() < 0.5) + if (Random.NextDouble() < 0.5) { deltaHi++; }
