diff --git a/src/Nest/Analysis/TokenFilters/ElisionTokenFilter.cs b/src/Nest/Analysis/TokenFilters/ElisionTokenFilter.cs index b6bf95f9221..89f19d2f364 100644 --- a/src/Nest/Analysis/TokenFilters/ElisionTokenFilter.cs +++ b/src/Nest/Analysis/TokenFilters/ElisionTokenFilter.cs @@ -13,29 +13,42 @@ public interface IElisionTokenFilter : ITokenFilter /// [JsonProperty("articles")] IEnumerable Articles { get; set; } + + /// + /// Whether articles should be handled case-insensitively. Defaults to false. + /// + [JsonProperty("articles_case")] + bool? ArticlesCase { get; set; } } - /// + /// public class ElisionTokenFilter : TokenFilterBase, IElisionTokenFilter { public ElisionTokenFilter() : base("elision") { } /// public IEnumerable Articles { get; set; } + + /// + public bool? ArticlesCase { get; set; } } - /// + /// public class ElisionTokenFilterDescriptor : TokenFilterDescriptorBase, IElisionTokenFilter { protected override string Type => "elision"; IEnumerable IElisionTokenFilter.Articles { get; set; } + bool? IElisionTokenFilter.ArticlesCase { get; set; } - /// + /// public ElisionTokenFilterDescriptor Articles(IEnumerable articles) => Assign(a => a.Articles = articles); - /// + /// public ElisionTokenFilterDescriptor Articles(params string[] articles) => Assign(a => a.Articles = articles); + + /// + public ElisionTokenFilterDescriptor ArticlesCase(bool? articlesCase = true) => Assign(a => a.ArticlesCase = articlesCase); } } diff --git a/src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs b/src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs index 6f68f98f46a..887fff6a8b6 100644 --- a/src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs +++ b/src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs @@ -94,11 +94,11 @@ public class EdgeNgramTests : TokenFilterAssertionBase public class ElisionTests : TokenFilterAssertionBase { - public override FuncTokenFilters Fluent => (n, tf) => tf.Elision(n, t => t.Articles("a", "b", "c")); + public override FuncTokenFilters Fluent => (n, tf) => tf.Elision(n, t => t.Articles("a", "b", "c").ArticlesCase()); - public override ITokenFilter Initializer => new ElisionTokenFilter { Articles = new[] { "a", "b", "c" } }; + public override ITokenFilter Initializer => new ElisionTokenFilter { Articles = new[] { "a", "b", "c" }, ArticlesCase = true }; - public override object Json => new { type = "elision", articles = new[] { "a", "b", "c" } }; + public override object Json => new { type = "elision", articles = new[] { "a", "b", "c" }, articles_case = true }; public override string Name => "el"; }