Skip to content

Commit 8e77da6

Browse files
committed
support predicate_token_filter elastic/elasticsearch#33431
1 parent 74d8642 commit 8e77da6

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/Nest/Analysis/TokenFilters/TokenFilters.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ public TokenFiltersDescriptor Standard(string name, Func<StandardTokenFilterDesc
225225
public TokenFiltersDescriptor Stemmer(string name, Func<StemmerTokenFilterDescriptor, IStemmerTokenFilter> selector) =>
226226
Assign(name, selector?.Invoke(new StemmerTokenFilterDescriptor()));
227227

228+
/// <inheritdoc cref="IPredicateTokenFilter" />
229+
public TokenFiltersDescriptor Predicate(string name, Func<PredicateTokenFilterDescriptor, IPredicateTokenFilter> selector) =>
230+
Assign(name, selector?.Invoke(new PredicateTokenFilterDescriptor()));
231+
228232
/// <summary>
229233
/// Overrides stemming algorithms, by applying a custom mapping, then protecting these terms from being modified by stemmers. Must be placed
230234
/// before any stemming filters.

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

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,28 @@ public class StemmerTests : TokenFilterAssertionBase<StemmerTests>
584584
public override string Name => "stem";
585585
}
586586

587+
[SkipVersion("<6.5.0", "predicate token filter not available in earlier versions")]
588+
public class PredicateTests : TokenFilterAssertionBase<PredicateTests>
589+
{
590+
private readonly string _predicate = "token.getTerm().length() > 5";
591+
592+
public override FuncTokenFilters Fluent => (n, tf) => tf.Predicate(n, t => t.Script(_predicate));
593+
594+
public override ITokenFilter Initializer => new PredicateTokenFilter { Script = new InlineScript(_predicate) };
595+
596+
public override object Json => new
597+
{
598+
type = "predicate_token_filter",
599+
script = new
600+
{
601+
source = _predicate
602+
}
603+
};
604+
605+
public override string Name => "predicate";
606+
}
607+
608+
587609
public class StemmerOverrideTests : TokenFilterAssertionBase<StemmerOverrideTests>
588610
{
589611
public override FuncTokenFilters Fluent => (n, tf) => tf.StemmerOverride(n, t => t.RulesPath("analysis/custom_stems.txt"));
@@ -897,7 +919,7 @@ public class NoriPartOfSpeechTests : TokenFilterAssertionBase<NoriPartOfSpeechTe
897919
}
898920

899921
[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
900-
public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
922+
public class MultiplexerTests : TokenFilterAssertionBase<MultiplexerTests>
901923
{
902924
public override FuncTokenFilters Fluent => (n, tf) => tf
903925
.Multiplexer(n, t => t
@@ -921,7 +943,7 @@ public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
921943
}
922944

923945
[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
924-
public class RemoveDuplicatesTests : TokenFilterAssertionBase<PhoneticTests>
946+
public class RemoveDuplicatesTests : TokenFilterAssertionBase<RemoveDuplicatesTests>
925947
{
926948
public override FuncTokenFilters Fluent => (n, tf) => tf.RemoveDuplicates(n);
927949
public override ITokenFilter Initializer => new RemoveDuplicatesTokenFilter { };

0 commit comments

Comments
 (0)