Skip to content

Commit f15e6c7

Browse files
committed
support predicate_token_filter elastic/elasticsearch#33431
1 parent c7f462c commit f15e6c7

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
@@ -223,6 +223,10 @@ public TokenFiltersDescriptor Standard(string name, Func<StandardTokenFilterDesc
223223
public TokenFiltersDescriptor Stemmer(string name, Func<StemmerTokenFilterDescriptor, IStemmerTokenFilter> selector) =>
224224
Assign(name, selector?.Invoke(new StemmerTokenFilterDescriptor()));
225225

226+
/// <inheritdoc cref="IPredicateTokenFilter" />
227+
public TokenFiltersDescriptor Predicate(string name, Func<PredicateTokenFilterDescriptor, IPredicateTokenFilter> selector) =>
228+
Assign(name, selector?.Invoke(new PredicateTokenFilterDescriptor()));
229+
226230
/// <summary>
227231
/// Overrides stemming algorithms, by applying a custom mapping, then protecting these terms from being modified by stemmers. Must be placed
228232
/// 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
@@ -582,6 +582,28 @@ public class StemmerTests : TokenFilterAssertionBase<StemmerTests>
582582
public override string Name => "stem";
583583
}
584584

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

897919
[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
898-
public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
920+
public class MultiplexerTests : TokenFilterAssertionBase<MultiplexerTests>
899921
{
900922
public override FuncTokenFilters Fluent => (n, tf) => tf
901923
.Multiplexer(n, t => t
@@ -919,7 +941,7 @@ public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
919941
}
920942

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

0 commit comments

Comments
 (0)