diff --git a/src/Nest/DSL/Filter/RegexpFilterDescriptor.cs b/src/Nest/DSL/Filter/RegexpFilterDescriptor.cs index 0d256d4d573..464b63cdc5b 100644 --- a/src/Nest/DSL/Filter/RegexpFilterDescriptor.cs +++ b/src/Nest/DSL/Filter/RegexpFilterDescriptor.cs @@ -15,6 +15,9 @@ public interface IRegexpFilter : IFieldNameFilter [JsonProperty("flags")] string Flags { get; set; } + [JsonProperty(PropertyName = "max_determinized_states")] + int? MaximumDeterminizedStates { get; set; } + } public class RegexpFilter : PlainFilter, IRegexpFilter @@ -26,43 +29,53 @@ protected internal override void WrapInContainer(IFilterContainer container) public string Value { get; set; } public string Flags { get; set; } + public int? MaximumDeterminizedStates { get; set; } public PropertyPathMarker Field { get; set; } } public class RegexpFilterDescriptor : FilterBase, IRegexpFilter where T : class { + private IRegexpFilter Self { get { return this; }} + string IRegexpFilter.Value { get; set; } string IRegexpFilter.Flags { get; set; } + int? IRegexpFilter.MaximumDeterminizedStates { get; set; } + PropertyPathMarker IFieldNameFilter.Field { get; set; } bool IFilter.IsConditionless { get { - return ((IRegexpFilter)this).Field.IsConditionless() || ((IRegexpFilter)this).Value.IsNullOrEmpty(); + return Self.Field.IsConditionless() || Self.Value.IsNullOrEmpty(); } } public RegexpFilterDescriptor Value(string regex) { - ((IRegexpFilter)this).Value = regex; + Self.Value = regex; return this; } public RegexpFilterDescriptor Flags(string flags) { - ((IRegexpFilter)this).Flags = flags; + Self.Flags = flags; + return this; + } + public RegexpFilterDescriptor MaximumDeterminizedStates(int maxDeterminizedStates) + { + Self.MaximumDeterminizedStates = maxDeterminizedStates; return this; } public RegexpFilterDescriptor OnField(string path) { - ((IRegexpFilter)this).Field = path; + Self.Field = path; return this; } public RegexpFilterDescriptor OnField(Expression> objectPath) { - ((IRegexpFilter)this).Field = objectPath; + Self.Field = objectPath; return this; } diff --git a/src/Nest/DSL/Query/QueryStringDescriptor.cs b/src/Nest/DSL/Query/QueryStringDescriptor.cs index 84a559a8b8a..cb206c56464 100644 --- a/src/Nest/DSL/Query/QueryStringDescriptor.cs +++ b/src/Nest/DSL/Query/QueryStringDescriptor.cs @@ -70,6 +70,9 @@ public interface IQueryStringQuery : IQuery [JsonProperty(PropertyName = "tie_breaker")] double? TieBreaker { get; set; } + [JsonProperty(PropertyName = "max_determinized_states")] + int? MaximumDeterminizedStates { get; set; } + [JsonProperty(PropertyName = "rewrite")] [JsonConverter(typeof (StringEnumConverter))] RewriteMultiTerm? Rewrite { get; set; } @@ -110,6 +113,7 @@ protected override void WrapInContainer(IQueryContainer container) public string MinimumShouldMatchPercentage { get; set; } public bool? UseDisMax { get; set; } public double? TieBreaker { get; set; } + public int? MaximumDeterminizedStates { get; set; } public RewriteMultiTerm? Rewrite { get; set; } } @@ -155,6 +159,8 @@ public class QueryStringQueryDescriptor : IQueryStringQuery where T : class bool? IQueryStringQuery.UseDisMax { get; set; } double? IQueryStringQuery.TieBreaker { get; set; } + + int? IQueryStringQuery.MaximumDeterminizedStates { get; set; } RewriteMultiTerm? IQueryStringQuery.Rewrite { get; set; } @@ -303,6 +309,10 @@ public QueryStringQueryDescriptor TieBreaker(double tieBreaker) Self.TieBreaker = tieBreaker; return this; } - + public QueryStringQueryDescriptor MaximumDeterminizedStates(int maxDeterminizedStates) + { + Self.MaximumDeterminizedStates = maxDeterminizedStates; + return this; + } } } diff --git a/src/Nest/DSL/Query/RegexpQueryDescriptor.cs b/src/Nest/DSL/Query/RegexpQueryDescriptor.cs index b824a9531da..82b8cbb1e79 100644 --- a/src/Nest/DSL/Query/RegexpQueryDescriptor.cs +++ b/src/Nest/DSL/Query/RegexpQueryDescriptor.cs @@ -16,6 +16,9 @@ public interface IRegexpQuery : IFieldNameQuery [JsonProperty("flags")] string Flags { get; set; } + [JsonProperty(PropertyName = "max_determinized_states")] + int? MaximumDeterminizedStates { get; set; } + PropertyPathMarker Field { get; set; } [JsonProperty("boost")] @@ -43,6 +46,7 @@ void IFieldNameQuery.SetFieldName(string fieldName) public string Value { get; set; } public string Flags { get; set; } + public int? MaximumDeterminizedStates { get; set; } public PropertyPathMarker Field { get; set; } public double? Boost { get; set; } } @@ -55,6 +59,8 @@ public class RegexpQueryDescriptor : IRegexpQuery where T : class string IRegexpQuery.Flags { get; set; } + int? IRegexpQuery.MaximumDeterminizedStates { get; set; } + PropertyPathMarker IRegexpQuery.Field { get; set; } double? IRegexpQuery.Boost { get; set; } @@ -83,7 +89,11 @@ public RegexpQueryDescriptor Name(string name) Self.Name = name; return this; } - + public RegexpQueryDescriptor MaximumDeterminizedStates(int maxDeterminizedStates) + { + Self.MaximumDeterminizedStates = maxDeterminizedStates; + return this; + } public RegexpQueryDescriptor Value(string regex) { Self.Value = regex;