@@ -281,4 +281,62 @@ void shouldFilterWithInCondition() {
281
281
assertThat (results .get (0 ).getId ()).isEqualTo ("1" );
282
282
}
283
283
284
+ @ Test
285
+ void shouldFilterByNumericRange () {
286
+ List <Document > docs = Arrays .asList (
287
+ Document .builder ().id ("1" ).text ("entity" ).metadata (Map .of ("value" , 1 )).build (),
288
+ Document .builder ().id ("2" ).text ("entity" ).metadata (Map .of ("value" , 2 )).build (),
289
+ Document .builder ().id ("3" ).text ("entity" ).metadata (Map .of ("value" , 3 )).build ());
290
+
291
+ vectorStore .add (docs );
292
+
293
+ List <Document > results = vectorStore .similaritySearch (
294
+ SearchRequest .builder ().query ("entity" ).filterExpression ("value >= 1 && value <= 1" ).build ());
295
+
296
+ assertThat (results ).hasSize (1 );
297
+ assertThat (results .get (0 ).getId ()).isEqualTo ("1" );
298
+ }
299
+
300
+ @ Test
301
+ void shouldReturnEmptyResultsWhenNoDocumentsMatchFilter () {
302
+ Document doc = Document .builder ().id ("1" ).text ("test" ).metadata (Map .of ("type" , "document" )).build ();
303
+
304
+ vectorStore .add (List .of (doc ));
305
+
306
+ List <Document > results = vectorStore
307
+ .similaritySearch (SearchRequest .builder ().query ("test" ).filterExpression ("type == 'image'" ).build ());
308
+
309
+ assertThat (results ).isEmpty ();
310
+ }
311
+
312
+ @ Test
313
+ void shouldFilterByBooleanValue () {
314
+ List <Document > docs = Arrays .asList (
315
+ Document .builder ().id ("1" ).text ("instance" ).metadata (Map .of ("enabled" , true )).build (),
316
+ Document .builder ().id ("2" ).text ("instance" ).metadata (Map .of ("enabled" , false )).build ());
317
+
318
+ vectorStore .add (docs );
319
+
320
+ List <Document > results = vectorStore
321
+ .similaritySearch (SearchRequest .builder ().query ("instance" ).filterExpression ("enabled == true" ).build ());
322
+
323
+ assertThat (results ).hasSize (1 );
324
+ assertThat (results .get (0 ).getId ()).isEqualTo ("1" );
325
+ }
326
+
327
+ @ Test
328
+ void shouldFilterByNotEqual () {
329
+ List <Document > docs = Arrays .asList (
330
+ Document .builder ().id ("1" ).text ("item" ).metadata (Map .of ("classification" , "typeA" )).build (),
331
+ Document .builder ().id ("2" ).text ("item" ).metadata (Map .of ("classification" , "typeB" )).build ());
332
+
333
+ vectorStore .add (docs );
334
+
335
+ List <Document > results = vectorStore .similaritySearch (
336
+ SearchRequest .builder ().query ("item" ).filterExpression ("classification != 'typeB'" ).build ());
337
+
338
+ assertThat (results ).hasSize (1 );
339
+ assertThat (results .get (0 ).getId ()).isEqualTo ("1" );
340
+ }
341
+
284
342
}
0 commit comments