Skip to content

Commit 6db6095

Browse files
Mpdreamzrusscam
authored andcommitted
Add support for Remove Duplicates token filter (#3426)
1 parent fdb05e8 commit 6db6095

File tree

4 files changed

+42
-0
lines changed

4 files changed

+42
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using Newtonsoft.Json;
4+
5+
namespace Nest
6+
{
7+
/// <summary>
8+
/// A token filter that drops identical tokens at the same position
9+
/// </summary>
10+
public interface IRemoveDuplicatesTokenFilter : ITokenFilter { }
11+
12+
///<inheritdoc cref="IRemoveDuplicatesTokenFilter"/>
13+
public class RemoveDuplicatesTokenFilter : TokenFilterBase, IRemoveDuplicatesTokenFilter
14+
{
15+
internal const string TokenType = "remove_duplicates";
16+
public RemoveDuplicatesTokenFilter() : base(TokenType) { }
17+
}
18+
19+
///<inheritdoc cref="IRemoveDuplicatesTokenFilter"/>
20+
public class RemoveDuplicatesTokenFilterDescriptor
21+
: TokenFilterDescriptorBase<RemoveDuplicatesTokenFilterDescriptor, IRemoveDuplicatesTokenFilter>, IRemoveDuplicatesTokenFilter
22+
{
23+
protected override string Type => RemoveDuplicatesTokenFilter.TokenType;
24+
}
25+
}

src/Nest/Analysis/TokenFilters/TokenFilters.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,5 +324,9 @@ public TokenFiltersDescriptor IcuTransform(string name, Func<IcuTransformTokenFi
324324
/// </summary>
325325
public TokenFiltersDescriptor Multiplexer(string name, Func<MultiplexerTokenFilterDescriptor, IMultiplexerTokenFilter> selector) =>
326326
Assign(name, selector.Invoke(new MultiplexerTokenFilterDescriptor()));
327+
328+
/// <summary> A token filter of type remove_duplicates that drops identical tokens at the same position. </summary>
329+
public TokenFiltersDescriptor RemoveDuplicates(string name, Func<RemoveDuplicatesTokenFilterDescriptor, IRemoveDuplicatesTokenFilter> selector = null) =>
330+
Assign(name, selector.InvokeOrDefault(new RemoveDuplicatesTokenFilterDescriptor()));
327331
}
328332
}

src/Nest/Indices/Analyze/AnalyzeTokenFilters.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,10 @@ public AnalyzeTokenFiltersDescriptor IcuTransform(Func<IcuTransformTokenFilterDe
327327
///<inheritdoc cref="IMultiplexerTokenFilter"/>
328328
public AnalyzeTokenFiltersDescriptor Multiplexer(Func<MultiplexerTokenFilterDescriptor, IMultiplexerTokenFilter> selector) =>
329329
AssignIfNotNull(selector.Invoke(new MultiplexerTokenFilterDescriptor()));
330+
331+
///<inheritdoc cref="IRemoveDuplicatesTokenFilter"/>
332+
public AnalyzeTokenFiltersDescriptor RemoveDuplicates(Func<RemoveDuplicatesTokenFilterDescriptor, IRemoveDuplicatesTokenFilter> selector) =>
333+
AssignIfNotNull(selector.Invoke(new RemoveDuplicatesTokenFilterDescriptor()));
330334
}
331335

332336
}

src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,5 +902,14 @@ public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
902902
.PreserveOriginal()
903903
);
904904
}
905+
906+
[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
907+
public class RemoveDuplicatesTests : TokenFilterAssertionBase<PhoneticTests>
908+
{
909+
public override string Name => "dupes";
910+
public override object Json => new { };
911+
public override ITokenFilter Initializer => new RemoveDuplicatesTokenFilter { };
912+
public override FuncTokenFilters Fluent => (n, tf) => tf.RemoveDuplicates(n);
913+
}
905914
}
906915
}

0 commit comments

Comments
 (0)