Skip to content

Commit f0c7da1

Browse files
committed
Merge pull request #1386 from robertlyson/SimpleQueryStringMinimumShouldMatchParameter
Support for minimum_should_match option on query_string_query #1356
2 parents 7a52b89 + bf10706 commit f0c7da1

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

src/Nest/DSL/Query/SimpleQueryStringQueryDescriptor.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Globalization;
34
using System.Linq;
45
using Nest.Resolvers.Converters;
56
using Newtonsoft.Json;
@@ -36,6 +37,9 @@ public interface ISimpleQueryStringQuery : IQuery
3637

3738
[JsonProperty(PropertyName = "locale")]
3839
string Locale { get; set; }
40+
41+
[JsonProperty("minimum_should_match")]
42+
string MinimumShouldMatch { get; set; }
3943
}
4044

4145
public class SimpleQueryStringQuery : PlainQuery, ISimpleQueryStringQuery
@@ -54,6 +58,7 @@ protected override void WrapInContainer(IQueryContainer container)
5458
public bool? LowercaseExpendedTerms { get; set; }
5559
public string Flags { get; set; }
5660
public string Locale { get; set; }
61+
public string MinimumShouldMatch { get; set; }
5762
}
5863

5964
public class SimpleQueryStringQueryDescriptor<T> : ISimpleQueryStringQuery where T : class
@@ -75,6 +80,7 @@ public class SimpleQueryStringQueryDescriptor<T> : ISimpleQueryStringQuery where
7580
string ISimpleQueryStringQuery.Flags { get; set; }
7681

7782
string ISimpleQueryStringQuery.Locale { get; set; }
83+
string ISimpleQueryStringQuery.MinimumShouldMatch { get; set; }
7884

7985
string IQuery.Name { get; set; }
8086

@@ -159,5 +165,16 @@ public SimpleQueryStringQueryDescriptor<T> Locale(string locale)
159165
return this;
160166
}
161167

162-
}
168+
public SimpleQueryStringQueryDescriptor<T> MinimumShouldMatch(int minimumShouldMatches)
169+
{
170+
((ISimpleQueryStringQuery)this).MinimumShouldMatch = minimumShouldMatches.ToString(CultureInfo.InvariantCulture);
171+
return this;
172+
}
173+
174+
public SimpleQueryStringQueryDescriptor<T> MinimumShouldMatch(string minimumShouldMatch)
175+
{
176+
Self.MinimumShouldMatch = minimumShouldMatch;
177+
return this;
178+
}
179+
}
163180
}

src/Tests/Nest.Tests.Unit/QueryParsers/Queries/SimpleQueryStringQueryTests.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public void SimpleQueryString_Deserializes()
2020
.DefaultField(p=>p.Name)
2121
.OnFields(p=>p.Name, p=>p.Origin)
2222
.Query("some query")
23+
.MinimumShouldMatch("50%")
2324
)
2425
);
2526
q.Analyzer.Should().Be("my-analyzer");
@@ -30,7 +31,35 @@ public void SimpleQueryString_Deserializes()
3031
q.DefaultField.Should().Be("name");
3132
q.Fields.Should().BeEquivalentTo(new []{ "name", "origin"});
3233
q.Query.Should().Be("some query");
34+
q.MinimumShouldMatch.Should().Be("50%");
35+
}
3336

37+
[Test]
38+
public void SimpleQueryString_MinimumShouldMatch_Deserializes()
39+
{
40+
var q = this.SerializeThenDeserialize(
41+
f => f.SimpleQueryString,
42+
f => f.SimpleQueryString(sq => sq
43+
.Analyzer("my-analyzer")
44+
.DefaultOperator(Operator.And)
45+
.Flags("ASFAS")
46+
.Locale("en")
47+
.LowercaseExpendedTerms()
48+
.DefaultField(p => p.Name)
49+
.OnFields(p => p.Name, p => p.Origin)
50+
.Query("some query")
51+
.MinimumShouldMatch(50)
52+
)
53+
);
54+
q.Analyzer.Should().Be("my-analyzer");
55+
q.DefaultOperator.Should().Be(Operator.And);
56+
q.Flags.Should().Be("ASFAS");
57+
q.Locale.Should().Be("en");
58+
q.LowercaseExpendedTerms.Should().BeTrue();
59+
q.DefaultField.Should().Be("name");
60+
q.Fields.Should().BeEquivalentTo(new[] { "name", "origin" });
61+
q.Query.Should().Be("some query");
62+
q.MinimumShouldMatch.Should().Be("50");
3463
}
3564
}
3665
}

0 commit comments

Comments
 (0)