@@ -98,51 +98,150 @@ public void testFromProtoWithOperatorUnspecified() {
9898 assertEquals ("Operator should be default OR" , Operator .OR , matchQueryBuilder .operator ());
9999 }
100100
101- public void testFromProtoWithFuzzinessInt () {
101+ public void testFromProtoWithFuzziness () {
102102 FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
103- org .opensearch .protobufs .Fuzziness fuzziness = org .opensearch .protobufs .Fuzziness .newBuilder ().setInt32 (2 ).build ();
104103
104+ // Test 1: Fuzziness with string value
105+ org .opensearch .protobufs .Fuzziness fuzzinessString = org .opensearch .protobufs .Fuzziness .newBuilder ().setString ("AUTO" ).build ();
106+ org .opensearch .protobufs .MatchQuery queryString = org .opensearch .protobufs .MatchQuery .newBuilder ()
107+ .setField ("message" )
108+ .setQuery (queryValue )
109+ .setFuzziness (fuzzinessString )
110+ .build ();
111+ MatchQueryBuilder builderString = MatchQueryBuilderProtoUtils .fromProto (queryString );
112+ assertNotNull ("Builder should not be null (STRING)" , builderString );
113+ assertEquals ("Fuzziness should match (STRING)" , Fuzziness .AUTO , builderString .fuzziness ());
114+
115+ // Test 2: Fuzziness with int32 value
116+ org .opensearch .protobufs .Fuzziness fuzzinessInt = org .opensearch .protobufs .Fuzziness .newBuilder ().setInt32 (2 ).build ();
117+ org .opensearch .protobufs .MatchQuery queryInt = org .opensearch .protobufs .MatchQuery .newBuilder ()
118+ .setField ("message" )
119+ .setQuery (queryValue )
120+ .setFuzziness (fuzzinessInt )
121+ .build ();
122+ MatchQueryBuilder builderInt = MatchQueryBuilderProtoUtils .fromProto (queryInt );
123+ assertNotNull ("Builder should not be null (INT32)" , builderInt );
124+ assertEquals ("Fuzziness should match (INT32)" , Fuzziness .fromEdits (2 ), builderInt .fuzziness ());
125+
126+ // Test 3: Fuzziness with empty/neither string nor int32
127+ org .opensearch .protobufs .Fuzziness fuzzinessEmpty = org .opensearch .protobufs .Fuzziness .newBuilder ().build ();
128+ org .opensearch .protobufs .MatchQuery queryEmpty = org .opensearch .protobufs .MatchQuery .newBuilder ()
129+ .setField ("message" )
130+ .setQuery (queryValue )
131+ .setFuzziness (fuzzinessEmpty )
132+ .build ();
133+ MatchQueryBuilder builderEmpty = MatchQueryBuilderProtoUtils .fromProto (queryEmpty );
134+ assertNotNull ("Builder should not be null (EMPTY)" , builderEmpty );
135+ assertNull ("Fuzziness should be null (EMPTY)" , builderEmpty .fuzziness ());
136+ }
137+
138+ public void testFromProtoWithMinimumShouldMatch () {
139+ FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
140+
141+ // Test 1: MinimumShouldMatch with string value
142+ org .opensearch .protobufs .MinimumShouldMatch minimumShouldMatchString = org .opensearch .protobufs .MinimumShouldMatch .newBuilder ()
143+ .setString ("75%" )
144+ .build ();
145+ org .opensearch .protobufs .MatchQuery queryString = org .opensearch .protobufs .MatchQuery .newBuilder ()
146+ .setField ("message" )
147+ .setQuery (queryValue )
148+ .setMinimumShouldMatch (minimumShouldMatchString )
149+ .build ();
150+ MatchQueryBuilder builderString = MatchQueryBuilderProtoUtils .fromProto (queryString );
151+ assertNotNull ("Builder should not be null (STRING)" , builderString );
152+ assertEquals ("Minimum should match (STRING)" , "75%" , builderString .minimumShouldMatch ());
153+
154+ // Test 2: MinimumShouldMatch with int32 value
155+ org .opensearch .protobufs .MinimumShouldMatch minimumShouldMatchInt = org .opensearch .protobufs .MinimumShouldMatch .newBuilder ()
156+ .setInt32 (2 )
157+ .build ();
158+ org .opensearch .protobufs .MatchQuery queryInt = org .opensearch .protobufs .MatchQuery .newBuilder ()
159+ .setField ("message" )
160+ .setQuery (queryValue )
161+ .setMinimumShouldMatch (minimumShouldMatchInt )
162+ .build ();
163+ MatchQueryBuilder builderInt = MatchQueryBuilderProtoUtils .fromProto (queryInt );
164+ assertNotNull ("Builder should not be null (INT32)" , builderInt );
165+ assertEquals ("Minimum should match (INT32)" , "2" , builderInt .minimumShouldMatch ());
166+
167+ // Test 3: MinimumShouldMatch with empty/neither
168+ org .opensearch .protobufs .MinimumShouldMatch minimumShouldMatchEmpty = org .opensearch .protobufs .MinimumShouldMatch .newBuilder ()
169+ .build ();
170+ org .opensearch .protobufs .MatchQuery queryEmpty = org .opensearch .protobufs .MatchQuery .newBuilder ()
171+ .setField ("message" )
172+ .setQuery (queryValue )
173+ .setMinimumShouldMatch (minimumShouldMatchEmpty )
174+ .build ();
175+ MatchQueryBuilder builderEmpty = MatchQueryBuilderProtoUtils .fromProto (queryEmpty );
176+ assertNotNull ("Builder should not be null (EMPTY)" , builderEmpty );
177+ assertNull ("Minimum should match should be null (EMPTY)" , builderEmpty .minimumShouldMatch ());
178+ }
179+
180+ public void testFromProtoWithFuzzyRewrite () {
181+ FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
182+
183+ // Test 1: FuzzyRewrite with CONSTANT_SCORE value
184+ org .opensearch .protobufs .MatchQuery queryWithRewrite = org .opensearch .protobufs .MatchQuery .newBuilder ()
185+ .setField ("message" )
186+ .setQuery (queryValue )
187+ .setFuzzyRewrite (org .opensearch .protobufs .MultiTermQueryRewrite .MULTI_TERM_QUERY_REWRITE_CONSTANT_SCORE )
188+ .build ();
189+ MatchQueryBuilder builderWithRewrite = MatchQueryBuilderProtoUtils .fromProto (queryWithRewrite );
190+ assertNotNull ("Builder should not be null (CONSTANT_SCORE)" , builderWithRewrite );
191+ assertNotNull ("Fuzzy rewrite should not be null (CONSTANT_SCORE)" , builderWithRewrite .fuzzyRewrite ());
192+ assertEquals ("Fuzzy rewrite should match (CONSTANT_SCORE)" , "constant_score" , builderWithRewrite .fuzzyRewrite ());
193+
194+ // Test 2: FuzzyRewrite with UNSPECIFIED value
195+ org .opensearch .protobufs .MatchQuery queryUnspecified = org .opensearch .protobufs .MatchQuery .newBuilder ()
196+ .setField ("message" )
197+ .setQuery (queryValue )
198+ .setFuzzyRewrite (org .opensearch .protobufs .MultiTermQueryRewrite .MULTI_TERM_QUERY_REWRITE_UNSPECIFIED )
199+ .build ();
200+ MatchQueryBuilder builderUnspecified = MatchQueryBuilderProtoUtils .fromProto (queryUnspecified );
201+ assertNotNull ("Builder should not be null (UNSPECIFIED)" , builderUnspecified );
202+ assertNull ("Fuzzy rewrite should be null (UNSPECIFIED)" , builderUnspecified .fuzzyRewrite ());
203+ }
204+
205+ public void testFromProtoWithZeroTermsQueryAll () {
206+ FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
105207 org .opensearch .protobufs .MatchQuery matchQuery = org .opensearch .protobufs .MatchQuery .newBuilder ()
106208 .setField ("message" )
107209 .setQuery (queryValue )
108- .setFuzziness ( fuzziness )
210+ .setZeroTermsQuery ( ZeroTermsQuery . ZERO_TERMS_QUERY_ALL )
109211 .build ();
110212
111213 MatchQueryBuilder matchQueryBuilder = MatchQueryBuilderProtoUtils .fromProto (matchQuery );
112214
113215 assertNotNull ("MatchQueryBuilder should not be null" , matchQueryBuilder );
114- assertEquals ("Fuzziness should match" , Fuzziness . fromEdits ( 2 ) , matchQueryBuilder .fuzziness ());
216+ assertEquals ("Zero terms query should match" , MatchQuery . ZeroTermsQuery . ALL , matchQueryBuilder .zeroTermsQuery ());
115217 }
116218
117- public void testFromProtoWithZeroTermsQueryNone () {
219+ public void testFromProtoWithLenient () {
118220 FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
119221 org .opensearch .protobufs .MatchQuery matchQuery = org .opensearch .protobufs .MatchQuery .newBuilder ()
120222 .setField ("message" )
121223 .setQuery (queryValue )
122- .setZeroTermsQuery ( ZeroTermsQuery . ZERO_TERMS_QUERY_NONE )
224+ .setLenient ( true )
123225 .build ();
124226
125227 MatchQueryBuilder matchQueryBuilder = MatchQueryBuilderProtoUtils .fromProto (matchQuery );
126228
127229 assertNotNull ("MatchQueryBuilder should not be null" , matchQueryBuilder );
128- assertEquals ("Zero terms query should match" , MatchQuery . ZeroTermsQuery . NONE , matchQueryBuilder .zeroTermsQuery ());
230+ assertEquals ("Lenient should match" , true , matchQueryBuilder .lenient ());
129231 }
130232
131- public void testFromProtoWithZeroTermsQueryUnspecified () {
233+ public void testFromProtoWithAutoGenerateSynonymsPhraseQueryFalse () {
132234 FieldValue queryValue = FieldValue .newBuilder ().setString ("test" ).build ();
133235 org .opensearch .protobufs .MatchQuery matchQuery = org .opensearch .protobufs .MatchQuery .newBuilder ()
134236 .setField ("message" )
135237 .setQuery (queryValue )
136- .setZeroTermsQuery ( ZeroTermsQuery . ZERO_TERMS_QUERY_UNSPECIFIED )
238+ .setAutoGenerateSynonymsPhraseQuery ( false )
137239 .build ();
138240
139241 MatchQueryBuilder matchQueryBuilder = MatchQueryBuilderProtoUtils .fromProto (matchQuery );
140242
141243 assertNotNull ("MatchQueryBuilder should not be null" , matchQueryBuilder );
142- assertEquals (
143- "Zero terms query should be default when UNSPECIFIED" ,
144- MatchQuery .DEFAULT_ZERO_TERMS_QUERY ,
145- matchQueryBuilder .zeroTermsQuery ()
146- );
244+ assertEquals ("Auto generate synonyms should match" , false , matchQueryBuilder .autoGenerateSynonymsPhraseQuery ());
147245 }
246+
148247}
0 commit comments