Skip to content

Commit 7008e80

Browse files
alxkmlittle-huang
authored andcommitted
test: Add additional filter condition tests for SimpleVectorStore (#4095)
* test: Add additional filter condition tests for SimpleVectorStore Signed-off-by: Oleksandr Klymenko <[email protected]> Signed-off-by: little_huang <[email protected]>
1 parent ab81d57 commit 7008e80

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/SimpleVectorStoreWithFilterTests.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,4 +281,62 @@ void shouldFilterWithInCondition() {
281281
assertThat(results.get(0).getId()).isEqualTo("1");
282282
}
283283

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+
284342
}

0 commit comments

Comments
 (0)