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 2021/11/23 00:32:18 UTC

[lucenenet] branch master updated: Patch for BlendedInfixSuggester to solve ArgumentNullException (#548) (fixes #527)

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


The following commit(s) were added to refs/heads/master by this push:
     new 54c9a76  Patch for BlendedInfixSuggester to solve ArgumentNullException (#548) (fixes #527)
54c9a76 is described below

commit 54c9a76ea22a1451e899577b296d4a58382d6a76
Author: Maxwellwr <mm...@gmail.com>
AuthorDate: Tue Nov 23 03:32:14 2021 +0300

    Patch for BlendedInfixSuggester to solve ArgumentNullException (#548) (fixes #527)
    
    * Apply patch from https://issues.apache.org/jira/browse/LUCENE-6093
    
    * Lucene.Net.Suggest.Analyzing.BlendedInfixSuggesterTest: Added missing comment, corrected BlenderType
    
    * Lucene.Net.Suggest.Analyzing.BlendedInfixSuggesterTest: Corrected test method ordering
    
    Co-authored-by: Maxim Maslich <m....@sirena-travel.ru>
    Co-authored-by: Shad Storhaug <sh...@shadstorhaug.com>
---
 .../Suggest/Analyzing/BlendedInfixSuggester.cs     |  6 ++---
 .../Suggest/Analyzing/BlendedInfixSuggesterTest.cs | 29 ++++++++++++++++++++++
 2 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/src/Lucene.Net.Suggest/Suggest/Analyzing/BlendedInfixSuggester.cs b/src/Lucene.Net.Suggest/Suggest/Analyzing/BlendedInfixSuggester.cs
index 3cf9edf..d648966 100644
--- a/src/Lucene.Net.Suggest/Suggest/Analyzing/BlendedInfixSuggester.cs
+++ b/src/Lucene.Net.Suggest/Suggest/Analyzing/BlendedInfixSuggester.cs
@@ -38,7 +38,7 @@ namespace Lucene.Net.Search.Suggest.Analyzing
     /// the indexed text.
     /// Please note that it increases the number of elements searched and applies the
     /// ponderation after. It might be costly for long suggestions.
-    /// 
+    ///
     /// @lucene.experimental
     /// </summary>
     public class BlendedInfixSuggester : AnalyzingInfixSuggester
@@ -71,7 +71,7 @@ namespace Lucene.Net.Search.Suggest.Analyzing
         {
             /// <summary>
             /// Application dependent; override <see cref="CalculateCoefficient(int)"/>
-            /// to compute it. 
+            /// to compute it.
             /// </summary>
             CUSTOM,
             /// <summary>
@@ -260,7 +260,7 @@ namespace Lucene.Net.Search.Suggest.Analyzing
             {
                 string docTerm = it.Term.Utf8ToString();
 
-                if (matchedTokens.Contains(docTerm) || docTerm.StartsWith(prefixToken, StringComparison.Ordinal))
+                if (matchedTokens.Contains(docTerm) || prefixToken != null &&  docTerm.StartsWith(prefixToken, StringComparison.Ordinal))
                 {
                     DocsAndPositionsEnum docPosEnum = it.DocsAndPositions(null, null, DocsAndPositionsFlags.OFFSETS);
                     docPosEnum.NextDoc();
diff --git a/src/Lucene.Net.Tests.Suggest/Suggest/Analyzing/BlendedInfixSuggesterTest.cs b/src/Lucene.Net.Tests.Suggest/Suggest/Analyzing/BlendedInfixSuggesterTest.cs
index 3d82edc..f2d7256 100644
--- a/src/Lucene.Net.Tests.Suggest/Suggest/Analyzing/BlendedInfixSuggesterTest.cs
+++ b/src/Lucene.Net.Tests.Suggest/Suggest/Analyzing/BlendedInfixSuggesterTest.cs
@@ -167,6 +167,34 @@ namespace Lucene.Net.Search.Suggest.Analyzing
 
             suggester.Dispose();
         }
+        
+        /**
+        * Handle trailing spaces that result in no prefix token LUCENE-6093
+        */
+        [Test]
+        public void TestNullPrefixToken()
+        {
+            BytesRef payload = new BytesRef("lake");
+
+            Input[] keys = new Input[] {
+                new Input("top of the lake", 8, payload)
+            };
+
+            DirectoryInfo tempDir = CreateTempDir("BlendedInfixSuggesterTest");
+
+            Analyzer a = new StandardAnalyzer(TEST_VERSION_CURRENT, CharArraySet.EMPTY_SET);
+            BlendedInfixSuggester suggester = new BlendedInfixSuggester(TEST_VERSION_CURRENT, NewFSDirectory(tempDir), a, a,
+                                                                        AnalyzingInfixSuggester.DEFAULT_MIN_PREFIX_CHARS,
+                                                                        BlendedInfixSuggester.BlenderType.POSITION_LINEAR,
+                                                                        BlendedInfixSuggester.DEFAULT_NUM_FACTOR);     //LUCENENET TODO: add extra false param at version 4.11.0
+            suggester.Build(new InputArrayEnumerator(keys));
+
+            GetInResults(suggester, "of ", payload, 1);
+            GetInResults(suggester, "the ", payload, 1);
+            GetInResults(suggester, "lake ", payload, 1);
+
+            suggester.Dispose();
+        }
 
         [Test]
         public void TestTrying()
@@ -203,6 +231,7 @@ namespace Lucene.Net.Search.Suggest.Analyzing
             suggester.Dispose();
         }
 
+
         private static long GetInResults(BlendedInfixSuggester suggester, string prefix, BytesRef payload, int num)
         {