From d95df6dde3b8629049ae08d860ad9ec3c734247d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20=C5=81yso=C5=84?= Date: Sun, 26 Apr 2015 14:02:52 +0200 Subject: [PATCH 1/2] Missing fuzzy_transpositions support in MatchQuery #1333 --- src/Nest/DSL/Query/MatchQueryDescriptor.cs | 13 ++++++- .../Queries/MatchQueryJsonConverter.cs | 1 + .../QueryParsers/Queries/MatchQueryTests.cs | 5 +++ .../Search/Query/Singles/MatchQueryJson.cs | 38 +++++++++++++++++++ 4 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/Nest/DSL/Query/MatchQueryDescriptor.cs b/src/Nest/DSL/Query/MatchQueryDescriptor.cs index 0a9260d1430..b3798c37b53 100644 --- a/src/Nest/DSL/Query/MatchQueryDescriptor.cs +++ b/src/Nest/DSL/Query/MatchQueryDescriptor.cs @@ -29,6 +29,9 @@ public interface IMatchQuery : IFieldNameQuery [JsonProperty(PropertyName = "fuzziness")] double? Fuzziness { get; set; } + [JsonProperty(PropertyName = "fuzzy_transpositions")] + bool? FuzzyTranspositions { get; set; } + [JsonProperty(PropertyName = "cutoff_frequency")] double? CutoffFrequency { get; set; } @@ -82,6 +85,7 @@ void IFieldNameQuery.SetFieldName(string fieldName) public string Analyzer { get; set; } public RewriteMultiTerm? Rewrite { get; set; } public double? Fuzziness { get; set; } + public bool? FuzzyTranspositions { get; set; } public double? CutoffFrequency { get; set; } public int? PrefixLength { get; set; } public int? MaxExpansions { get; set; } @@ -112,6 +116,7 @@ public class MatchQueryDescriptor : IMatchQuery where T : class RewriteMultiTerm? IMatchQuery.Rewrite { get; set; } double? IMatchQuery.Fuzziness { get; set; } + bool? IMatchQuery.FuzzyTranspositions { get; set; } double? IMatchQuery.CutoffFrequency { get; set; } @@ -187,7 +192,13 @@ public MatchQueryDescriptor Fuzziness(double fuzziness) Self.Fuzziness = fuzziness; return this; } - + + public MatchQueryDescriptor FuzzyTranspositions(bool fuzzyTranspositions = true) + { + Self.FuzzyTranspositions = fuzzyTranspositions; + return this; + } + public MatchQueryDescriptor CutoffFrequency(double cutoffFrequency) { Self.CutoffFrequency = cutoffFrequency; diff --git a/src/Nest/Resolvers/Converters/Queries/MatchQueryJsonConverter.cs b/src/Nest/Resolvers/Converters/Queries/MatchQueryJsonConverter.cs index 96dead1b771..9e213cb50cd 100644 --- a/src/Nest/Resolvers/Converters/Queries/MatchQueryJsonConverter.cs +++ b/src/Nest/Resolvers/Converters/Queries/MatchQueryJsonConverter.cs @@ -45,6 +45,7 @@ public override object ReadJson(JsonReader reader, Type objectType, object exist fq.Analyzer = GetPropValue(jo, "analyzer"); fq.CutoffFrequency = GetPropValue(jo, "cutoff_frequency"); fq.Fuzziness = GetPropValue(jo, "fuzziness"); + fq.FuzzyTranspositions = GetPropValue(jo, "fuzzy_transpositions"); fq.Lenient = GetPropValue(jo, "lenient"); fq.MaxExpansions = GetPropValue(jo, "max_expansions"); fq.PrefixLength = GetPropValue(jo, "prefix_length"); diff --git a/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/MatchQueryTests.cs b/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/MatchQueryTests.cs index f4c7e2afc9b..e0f18bdc35a 100644 --- a/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/MatchQueryTests.cs +++ b/src/Tests/Nest.Tests.Unit/QueryParsers/Queries/MatchQueryTests.cs @@ -33,6 +33,7 @@ public void Match_Deserializes() q.Boost.Should().Be(2.1); q.CutoffFrequency.Should().Be(1.31); q.Fuzziness.Should().Be(2.3); + q.FuzzyTranspositions.Should().Be(null); q.Lenient.Should().BeTrue(); q.MaxExpansions.Should().Be(2); q.Field.Should().Be("name"); @@ -54,6 +55,7 @@ public void MatchPhrasePhrefix_Deserializes() .Boost(2.1) .CutoffFrequency(1.31) .Fuzziness(2.3) + .FuzzyTranspositions(false) .Lenient() .MaxExpansions(2) .Operator(Operator.And) @@ -68,6 +70,7 @@ public void MatchPhrasePhrefix_Deserializes() q.Boost.Should().Be(2.1); q.CutoffFrequency.Should().Be(1.31); q.Fuzziness.Should().Be(2.3); + q.FuzzyTranspositions.Should().Be(false); q.Lenient.Should().BeTrue(); q.MaxExpansions.Should().Be(2); q.Field.Should().Be("name"); @@ -89,6 +92,7 @@ public void MatchPhrase_Deserializes() .Boost(2.1) .CutoffFrequency(1.31) .Fuzziness(2.3) + .FuzzyTranspositions() .Lenient() .MaxExpansions(2) .Operator(Operator.And) @@ -103,6 +107,7 @@ public void MatchPhrase_Deserializes() q.Boost.Should().Be(2.1); q.CutoffFrequency.Should().Be(1.31); q.Fuzziness.Should().Be(2.3); + q.FuzzyTranspositions.Should().Be(true); q.Lenient.Should().BeTrue(); q.MaxExpansions.Should().Be(2); q.Field.Should().Be("name"); diff --git a/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs b/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs index 6038d1cb0c5..0092acff5c9 100644 --- a/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs +++ b/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs @@ -68,6 +68,7 @@ public void MatchPhraseQuery() }"; Assert.True(json.JsonEquals(expected), json); } + [Test] public void MatchQuerySomeOptions() { @@ -104,5 +105,42 @@ public void MatchQuerySomeOptions() }"; Assert.True(json.JsonEquals(expected), json); } + [Test] + public void MatchQueryFuzzyTranspositions() + { + var s = new SearchDescriptor() + .From(0) + .Size(10) + .Query(q => q + .Match(t => t + .OnField(f => f.Name) + .Query("this is a test") + .Fuzziness(1.0) + .FuzzyTranspositions() + .Analyzer("my_analyzer") + .CutoffFrequency(0.3) + .Rewrite(RewriteMultiTerm.ConstantScoreFilter) + .PrefixLength(2) + ) + ); + + var json = TestElasticClient.Serialize(s); + var expected = @"{ from: 0, size: 10, + query : { + match: { + name : { + query : ""this is a test"", + analyzer : ""my_analyzer"", + rewrite: ""constant_score_filter"", + fuzziness: 1.0, + fuzzy_transpositions : true, + cutoff_frequency: 0.3, + prefix_length: 2 + } + } + } + }"; + Assert.True(json.JsonEquals(expected), json); + } } } From 1bfc062f7e843da691a25b3976a0016c8786e9e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20=C5=81yso=C5=84?= Date: Sun, 26 Apr 2015 14:12:11 +0200 Subject: [PATCH 2/2] Missing fuzzy_transpositions support in MatchQuery #1333 - formatting issue --- .../Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs b/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs index 0092acff5c9..6c1f9fa3c1f 100644 --- a/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs +++ b/src/Tests/Nest.Tests.Unit/Search/Query/Singles/MatchQueryJson.cs @@ -35,6 +35,7 @@ public void MatchQuery() } } }"; + Assert.True(json.JsonEquals(expected), json); } @@ -66,6 +67,7 @@ public void MatchPhraseQuery() } } }"; + Assert.True(json.JsonEquals(expected), json); } @@ -79,7 +81,6 @@ public void MatchQuerySomeOptions() .Match(t => t .OnField(f => f.Name) .Query("this is a test") - .Fuzziness(1.0) .Analyzer("my_analyzer") .CutoffFrequency(0.3) @@ -103,8 +104,10 @@ public void MatchQuerySomeOptions() } } }"; + Assert.True(json.JsonEquals(expected), json); } + [Test] public void MatchQueryFuzzyTranspositions() { @@ -140,6 +143,7 @@ public void MatchQueryFuzzyTranspositions() } } }"; + Assert.True(json.JsonEquals(expected), json); } }