Skip to content

Commit

Permalink
support predicate_token_filter elastic/elasticsearch#33431
Browse files Browse the repository at this point in the history
  • Loading branch information
Mpdreamz committed Dec 18, 2018
1 parent 05ade62 commit 473c49f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
4 changes: 4 additions & 0 deletions src/Nest/Analysis/TokenFilters/TokenFilters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ public TokenFiltersDescriptor Standard(string name, Func<StandardTokenFilterDesc
public TokenFiltersDescriptor Stemmer(string name, Func<StemmerTokenFilterDescriptor, IStemmerTokenFilter> selector) =>
Assign(name, selector?.Invoke(new StemmerTokenFilterDescriptor()));

/// <inheritdoc cref="IPredicateTokenFilter" />
public TokenFiltersDescriptor Predicate(string name, Func<PredicateTokenFilterDescriptor, IPredicateTokenFilter> selector) =>
Assign(name, selector?.Invoke(new PredicateTokenFilterDescriptor()));

/// <summary>
/// Overrides stemming algorithms, by applying a custom mapping, then protecting these terms from being modified by stemmers. Must be placed
/// before any stemming filters.
Expand Down
26 changes: 24 additions & 2 deletions src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,28 @@ public class StemmerTests : TokenFilterAssertionBase<StemmerTests>
public override string Name => "stem";
}

[SkipVersion("<6.5.0", "predicate token filter not available in earlier versions")]
public class PredicateTests : TokenFilterAssertionBase<PredicateTests>
{
private readonly string _predicate = "token.getTerm().length() > 5";

public override FuncTokenFilters Fluent => (n, tf) => tf.Predicate(n, t => t.Script(_predicate));

public override ITokenFilter Initializer => new PredicateTokenFilter { Script = new InlineScript(_predicate) };

public override object Json => new
{
type = "predicate_token_filter",
script = new
{
source = _predicate
}
};

public override string Name => "predicate";
}


public class StemmerOverrideTests : TokenFilterAssertionBase<StemmerOverrideTests>
{
public override FuncTokenFilters Fluent => (n, tf) => tf.StemmerOverride(n, t => t.RulesPath("analysis/custom_stems.txt"));
Expand Down Expand Up @@ -895,7 +917,7 @@ public class NoriPartOfSpeechTests : TokenFilterAssertionBase<NoriPartOfSpeechTe
}

[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
public class MultiplexerTests : TokenFilterAssertionBase<MultiplexerTests>
{
public override FuncTokenFilters Fluent => (n, tf) => tf
.Multiplexer(n, t => t
Expand All @@ -919,7 +941,7 @@ public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
}

[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
public class RemoveDuplicatesTests : TokenFilterAssertionBase<PhoneticTests>
public class RemoveDuplicatesTests : TokenFilterAssertionBase<RemoveDuplicatesTests>
{
public override FuncTokenFilters Fluent => (n, tf) => tf.RemoveDuplicates(n);
public override ITokenFilter Initializer => new RemoveDuplicatesTokenFilter { };
Expand Down

0 comments on commit 473c49f

Please sign in to comment.