Skip to content

Commit fb6df8d

Browse files
Mpdreamzrusscam
authored andcommitted
Add support for index_phrases (#3433)
(cherry picked from commit 4e3543b)
1 parent fd6f4dc commit fb6df8d

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

src/Nest/Mapping/Types/Core/Text/TextAttribute.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public TextAttribute() : base(FieldType.Text) { }
1919
IFielddataFrequencyFilter ITextProperty.FielddataFrequencyFilter { get; set; }
2020
ITextIndexPrefixes ITextProperty.IndexPrefixes { get; set; }
2121
bool? ITextProperty.Index { get; set; }
22+
bool? ITextProperty.IndexPhrases { get; set; }
2223
IndexOptions? ITextProperty.IndexOptions { get; set; }
2324
bool? ITextProperty.Norms { get; set; }
2425
int? ITextProperty.PositionIncrementGap { get; set; }
@@ -32,6 +33,7 @@ public TextAttribute() : base(FieldType.Text) { }
3233
public bool Fielddata { get => Self.Fielddata.GetValueOrDefault(); set => Self.Fielddata = value; }
3334
public bool Index { get => Self.Index.GetValueOrDefault(); set => Self.Index = value; }
3435
public IndexOptions IndexOptions { get => Self.IndexOptions.GetValueOrDefault(); set => Self.IndexOptions = value; }
36+
public bool IndexPhrases { get => Self.IndexPhrases.GetValueOrDefault(); set => Self.IndexPhrases = value; }
3537
public int PositionIncrementGap { get => Self.PositionIncrementGap.GetValueOrDefault(); set => Self.PositionIncrementGap = value; }
3638
public string SearchAnalyzer { get => Self.SearchAnalyzer; set => Self.SearchAnalyzer = value; }
3739
public string SearchQuoteAnalyzer { get => Self.SearchQuoteAnalyzer; set => Self.SearchQuoteAnalyzer = value; }

src/Nest/Mapping/Types/Core/Text/TextProperty.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ public interface ITextProperty : ICoreProperty
3434
[JsonProperty("index")]
3535
bool? Index { get; set; }
3636

37+
[JsonProperty("index_phrases")]
38+
bool? IndexPhrases { get; set; }
39+
3740
[JsonProperty("index_options")]
3841
IndexOptions? IndexOptions { get; set; }
3942

@@ -58,6 +61,7 @@ public TextProperty() : base(FieldType.Text) { }
5861
public IFielddataFrequencyFilter FielddataFrequencyFilter { get; set; }
5962
public ITextIndexPrefixes IndexPrefixes { get; set; }
6063
public bool? Index { get; set; }
64+
public bool? IndexPhrases { get; set; }
6165
public IndexOptions? IndexOptions { get; set; }
6266
public bool? Norms { get; set; }
6367
public int? PositionIncrementGap { get; set; }
@@ -78,6 +82,7 @@ public class TextPropertyDescriptor<T>
7882
IFielddataFrequencyFilter ITextProperty.FielddataFrequencyFilter { get; set; }
7983
ITextIndexPrefixes ITextProperty.IndexPrefixes { get; set; }
8084
bool? ITextProperty.Index { get; set; }
85+
bool? ITextProperty.IndexPhrases { get; set; }
8186
IndexOptions? ITextProperty.IndexOptions { get; set; }
8287
bool? ITextProperty.Norms { get; set; }
8388
int? ITextProperty.PositionIncrementGap { get; set; }
@@ -96,6 +101,7 @@ public TextPropertyDescriptor<T> FielddataFrequencyFilter(Func<FielddataFrequenc
96101
public TextPropertyDescriptor<T> IndexPrefixes(Func<TextIndexPrefixesDescriptor, ITextIndexPrefixes> selector) =>
97102
Assign(a => a.IndexPrefixes = selector?.Invoke(new TextIndexPrefixesDescriptor()));
98103
public TextPropertyDescriptor<T> Index(bool? index = true) => Assign(a => a.Index = index);
104+
public TextPropertyDescriptor<T> IndexPhrases(bool? indexPhrases = true) => Assign(a => a.IndexPhrases = indexPhrases);
99105
public TextPropertyDescriptor<T> IndexOptions(IndexOptions? indexOptions) => Assign(a => a.IndexOptions = indexOptions);
100106
public TextPropertyDescriptor<T> Norms(bool? enabled = true) => Assign(a => a.Norms = enabled);
101107
public TextPropertyDescriptor<T> PositionIncrementGap(int? positionIncrementGap) => Assign(a => a.PositionIncrementGap = positionIncrementGap);

src/Tests/Tests/Mapping/Types/Core/Text/TextPropertyTests.cs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,84 @@
77

88
namespace Tests.Mapping.Types.Core.Text
99
{
10+
11+
[SkipVersion("<6.4.0", "index_phrases is a new feature")]
12+
public class TextPropertyIndexPhrasesTests : PropertyTestsBase
13+
{
14+
public TextPropertyIndexPhrasesTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
15+
16+
protected override object ExpectJson => new
17+
{
18+
properties = new
19+
{
20+
name = new
21+
{
22+
type = "text",
23+
index_phrases = true
24+
}
25+
}
26+
};
27+
28+
29+
protected override Func<PropertiesDescriptor<Project>, IPromise<IProperties>> FluentProperties => f => f
30+
.Text(s => s
31+
.Name(p => p.Name)
32+
.IndexPhrases()
33+
);
34+
35+
36+
protected override IProperties InitializerProperties => new Properties
37+
{
38+
{ "name", new TextProperty { IndexPhrases = true } }
39+
};
40+
}
41+
1042
[SkipVersion("<6.3.0", "index_prefixes is a new feature")]
43+
public class TextPropertyIndexPrefixesTests : PropertyTestsBase
44+
{
45+
public TextPropertyIndexPrefixesTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
46+
47+
protected override object ExpectJson => new
48+
{
49+
properties = new
50+
{
51+
name = new
52+
{
53+
type = "text",
54+
index_prefixes = new
55+
{
56+
min_chars = 1,
57+
max_chars = 10
58+
}
59+
}
60+
}
61+
};
62+
63+
64+
protected override Func<PropertiesDescriptor<Project>, IPromise<IProperties>> FluentProperties => f => f
65+
.Text(s => s
66+
.Name(p => p.Name)
67+
.IndexPrefixes(i => i
68+
.MinCharacters(1)
69+
.MaxCharacters(10)
70+
)
71+
);
72+
73+
74+
protected override IProperties InitializerProperties => new Properties
75+
{
76+
{ "name", new TextProperty
77+
{
78+
IndexPrefixes = new TextIndexPrefixes
79+
{
80+
MinCharacters = 1,
81+
MaxCharacters = 10
82+
}
83+
}
84+
}
85+
};
86+
}
87+
1188
public class TextPropertyTests : PropertyTestsBase
1289
{
1390
public TextPropertyTests(WritableCluster cluster, EndpointUsage usage) : base(cluster, usage) { }

0 commit comments

Comments
 (0)