Skip to content

Commit f5625fa

Browse files
committed
Add articles_case to elision token filter (#3572)
Closes #3570 (cherry picked from commit 08025cd)
1 parent 4e08047 commit f5625fa

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

src/Nest/Analysis/TokenFilters/ElisionTokenFilter.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,42 @@ public interface IElisionTokenFilter : ITokenFilter
1313
/// </summary>
1414
[JsonProperty("articles")]
1515
IEnumerable<string> Articles { get; set; }
16+
17+
/// <summary>
18+
/// Whether articles should be handled case-insensitively. Defaults to <c>false</c>.
19+
/// </summary>
20+
[JsonProperty("articles_case")]
21+
bool? ArticlesCase { get; set; }
1622
}
1723

18-
/// <inheritdoc />
24+
/// <inheritdoc cref="IElisionTokenFilter"/>
1925
public class ElisionTokenFilter : TokenFilterBase, IElisionTokenFilter
2026
{
2127
public ElisionTokenFilter() : base("elision") { }
2228

2329
/// <inheritdoc />
2430
public IEnumerable<string> Articles { get; set; }
31+
32+
/// <inheritdoc />
33+
public bool? ArticlesCase { get; set; }
2534
}
2635

27-
/// <inheritdoc />
36+
/// <inheritdoc cref="IElisionTokenFilter"/>
2837
public class ElisionTokenFilterDescriptor
2938
: TokenFilterDescriptorBase<ElisionTokenFilterDescriptor, IElisionTokenFilter>, IElisionTokenFilter
3039
{
3140
protected override string Type => "elision";
3241

3342
IEnumerable<string> IElisionTokenFilter.Articles { get; set; }
43+
bool? IElisionTokenFilter.ArticlesCase { get; set; }
3444

35-
/// <inheritdoc />
45+
/// <inheritdoc cref="IElisionTokenFilter.Articles"/>
3646
public ElisionTokenFilterDescriptor Articles(IEnumerable<string> articles) => Assign(a => a.Articles = articles);
3747

38-
/// <inheritdoc />
48+
/// <inheritdoc cref="IElisionTokenFilter.Articles"/>
3949
public ElisionTokenFilterDescriptor Articles(params string[] articles) => Assign(a => a.Articles = articles);
50+
51+
/// <inheritdoc cref="IElisionTokenFilter.ArticlesCase"/>
52+
public ElisionTokenFilterDescriptor ArticlesCase(bool? articlesCase = true) => Assign(a => a.ArticlesCase = articlesCase);
4053
}
4154
}

src/Tests/Tests/Analysis/TokenFilters/TokenFilterUsageTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public class TokenFilterUsageTests : PromiseUsageTestBase<IIndexSettings, IndexS
5151
elision = new
5252
{
5353
type = "elision",
54-
articles = new[] { "a", "b", "c" }
54+
articles = new[] { "a", "b", "c" },
55+
articles_case = false
5556
},
5657
hunspell = new
5758
{
@@ -329,6 +330,7 @@ public class TokenFilterUsageTests : PromiseUsageTestBase<IIndexSettings, IndexS
329330
)
330331
.Elision("elision", t => t
331332
.Articles("a", "b", "c")
333+
.ArticlesCase(false)
332334
)
333335
#pragma warning disable 618 // Use of HunSpell IgnoreCase
334336
.Hunspell("hunspell", t => t
@@ -506,7 +508,7 @@ public class TokenFilterUsageTests : PromiseUsageTestBase<IIndexSettings, IndexS
506508
}
507509
},
508510
{ "etf", new EdgeNGramTokenFilter { MaxGram = 2, MinGram = 1 } },
509-
{ "elision", new ElisionTokenFilter { Articles = new[] { "a", "b", "c" } } },
511+
{ "elision", new ElisionTokenFilter { Articles = new[] { "a", "b", "c" }, ArticlesCase = false } },
510512
{
511513
"hunspell", new HunspellTokenFilter
512514
{

0 commit comments

Comments
 (0)