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)
{