Skip to content

Commit

Permalink
Add support for multiplexer token filter (elastic/elasticsearch#31208)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mpdreamz committed Sep 28, 2018
1 parent 2272dfb commit c748605
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/Nest/Analysis/TokenFilters/TokenFilters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -317,5 +317,12 @@ public TokenFiltersDescriptor IcuNormalization(string name, Func<IcuNormalizatio
/// </summary>
public TokenFiltersDescriptor IcuTransform(string name, Func<IcuTransformTokenFilterDescriptor, IIcuTransformTokenFilter> selector) =>
Assign(name, selector.Invoke(new IcuTransformTokenFilterDescriptor()));

/// <summary>
/// A token filter of type multiplexer will emit multiple tokens at the same position, each version of the token
/// having been run through a different filter. Identical output tokens at the same position will be removed.
/// </summary>
public TokenFiltersDescriptor Multiplexer(string name, Func<MultiplexerTokenFilterDescriptor, IMultiplexerTokenFilter> selector) =>
Assign(name, selector.Invoke(new MultiplexerTokenFilterDescriptor()));
}
}
24 changes: 24 additions & 0 deletions src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using Elastic.Xunit.XunitPlumbing;
using Nest;
using Tests.Framework;

Expand Down Expand Up @@ -878,5 +879,28 @@ public class PhoneticTests : TokenFilterAssertionBase<PhoneticTests>
};

}

[SkipVersion("<6.4.0", "Introduced in 6.4.0")]
public class MultiplexerTests : TokenFilterAssertionBase<PhoneticTests>
{
public override string Name => "multiplexer";
public override object Json => new
{
filters = new[]{"lowercase", "lowercase, porter_stem"},
preserve_original = true
};

public override ITokenFilter Initializer => new MultiplexerTokenFilter
{
Filters = new[] {"lowercase", "lowercase, porter_stem"},
PreserveOriginal = true
};

public override FuncTokenFilters Fluent => (n, tf) => tf
.Multiplexer(n, t => t
.Filters("lowercase", "lowercase, porter_stem")
.PreserveOriginal()
);
}
}
}

0 comments on commit c748605

Please sign in to comment.