Skip to content

Commit 7a534cf

Browse files
committed
Merge pull request #1393 from elastic/feature/max_determinized_states
fix #1358 added max_determinized_states to regexp filter and query an…
2 parents 9fbf9ca + c3509e7 commit 7a534cf

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

src/Nest/DSL/Filter/RegexpFilterDescriptor.cs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ public interface IRegexpFilter : IFieldNameFilter
1515
[JsonProperty("flags")]
1616
string Flags { get; set; }
1717

18+
[JsonProperty(PropertyName = "max_determinized_states")]
19+
int? MaximumDeterminizedStates { get; set; }
20+
1821
}
1922

2023
public class RegexpFilter : PlainFilter, IRegexpFilter
@@ -26,43 +29,53 @@ protected internal override void WrapInContainer(IFilterContainer container)
2629

2730
public string Value { get; set; }
2831
public string Flags { get; set; }
32+
public int? MaximumDeterminizedStates { get; set; }
2933
public PropertyPathMarker Field { get; set; }
3034
}
3135

3236
public class RegexpFilterDescriptor<T> : FilterBase, IRegexpFilter where T : class
3337
{
38+
private IRegexpFilter Self { get { return this; }}
39+
3440
string IRegexpFilter.Value { get; set; }
3541

3642
string IRegexpFilter.Flags { get; set; }
3743

44+
int? IRegexpFilter.MaximumDeterminizedStates { get; set; }
45+
3846
PropertyPathMarker IFieldNameFilter.Field { get; set; }
3947

4048
bool IFilter.IsConditionless
4149
{
4250
get
4351
{
44-
return ((IRegexpFilter)this).Field.IsConditionless() || ((IRegexpFilter)this).Value.IsNullOrEmpty();
52+
return Self.Field.IsConditionless() || Self.Value.IsNullOrEmpty();
4553
}
4654
}
4755

4856
public RegexpFilterDescriptor<T> Value(string regex)
4957
{
50-
((IRegexpFilter)this).Value = regex;
58+
Self.Value = regex;
5159
return this;
5260
}
5361
public RegexpFilterDescriptor<T> Flags(string flags)
5462
{
55-
((IRegexpFilter)this).Flags = flags;
63+
Self.Flags = flags;
64+
return this;
65+
}
66+
public RegexpFilterDescriptor<T> MaximumDeterminizedStates(int maxDeterminizedStates)
67+
{
68+
Self.MaximumDeterminizedStates = maxDeterminizedStates;
5669
return this;
5770
}
5871
public RegexpFilterDescriptor<T> OnField(string path)
5972
{
60-
((IRegexpFilter)this).Field = path;
73+
Self.Field = path;
6174
return this;
6275
}
6376
public RegexpFilterDescriptor<T> OnField(Expression<Func<T, object>> objectPath)
6477
{
65-
((IRegexpFilter)this).Field = objectPath;
78+
Self.Field = objectPath;
6679
return this;
6780
}
6881

src/Nest/DSL/Query/QueryStringDescriptor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public interface IQueryStringQuery : IQuery
7070
[JsonProperty(PropertyName = "tie_breaker")]
7171
double? TieBreaker { get; set; }
7272

73+
[JsonProperty(PropertyName = "max_determinized_states")]
74+
int? MaximumDeterminizedStates { get; set; }
75+
7376
[JsonProperty(PropertyName = "rewrite")]
7477
[JsonConverter(typeof (StringEnumConverter))]
7578
RewriteMultiTerm? Rewrite { get; set; }
@@ -110,6 +113,7 @@ protected override void WrapInContainer(IQueryContainer container)
110113
public string MinimumShouldMatchPercentage { get; set; }
111114
public bool? UseDisMax { get; set; }
112115
public double? TieBreaker { get; set; }
116+
public int? MaximumDeterminizedStates { get; set; }
113117
public RewriteMultiTerm? Rewrite { get; set; }
114118
}
115119

@@ -155,6 +159,8 @@ public class QueryStringQueryDescriptor<T> : IQueryStringQuery where T : class
155159
bool? IQueryStringQuery.UseDisMax { get; set; }
156160

157161
double? IQueryStringQuery.TieBreaker { get; set; }
162+
163+
int? IQueryStringQuery.MaximumDeterminizedStates { get; set; }
158164

159165
RewriteMultiTerm? IQueryStringQuery.Rewrite { get; set; }
160166

@@ -303,6 +309,10 @@ public QueryStringQueryDescriptor<T> TieBreaker(double tieBreaker)
303309
Self.TieBreaker = tieBreaker;
304310
return this;
305311
}
306-
312+
public QueryStringQueryDescriptor<T> MaximumDeterminizedStates(int maxDeterminizedStates)
313+
{
314+
Self.MaximumDeterminizedStates = maxDeterminizedStates;
315+
return this;
316+
}
307317
}
308318
}

src/Nest/DSL/Query/RegexpQueryDescriptor.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ public interface IRegexpQuery : IFieldNameQuery
1616
[JsonProperty("flags")]
1717
string Flags { get; set; }
1818

19+
[JsonProperty(PropertyName = "max_determinized_states")]
20+
int? MaximumDeterminizedStates { get; set; }
21+
1922
PropertyPathMarker Field { get; set; }
2023

2124
[JsonProperty("boost")]
@@ -43,6 +46,7 @@ void IFieldNameQuery.SetFieldName(string fieldName)
4346

4447
public string Value { get; set; }
4548
public string Flags { get; set; }
49+
public int? MaximumDeterminizedStates { get; set; }
4650
public PropertyPathMarker Field { get; set; }
4751
public double? Boost { get; set; }
4852
}
@@ -55,6 +59,8 @@ public class RegexpQueryDescriptor<T> : IRegexpQuery where T : class
5559

5660
string IRegexpQuery.Flags { get; set; }
5761

62+
int? IRegexpQuery.MaximumDeterminizedStates { get; set; }
63+
5864
PropertyPathMarker IRegexpQuery.Field { get; set; }
5965

6066
double? IRegexpQuery.Boost { get; set; }
@@ -83,7 +89,11 @@ public RegexpQueryDescriptor<T> Name(string name)
8389
Self.Name = name;
8490
return this;
8591
}
86-
92+
public RegexpQueryDescriptor<T> MaximumDeterminizedStates(int maxDeterminizedStates)
93+
{
94+
Self.MaximumDeterminizedStates = maxDeterminizedStates;
95+
return this;
96+
}
8797
public RegexpQueryDescriptor<T> Value(string regex)
8898
{
8999
Self.Value = regex;

0 commit comments

Comments
 (0)