spring-ai
spring-ai copied to clipboard
feat(vectorstore): add kotlin filter expression DSL for vector store
- Implement FilterExpressionDsl class for building complex filter expressions
- Add support for various filter operations: and, or, eq, ne, gt, gte, lt, lte, in, nin ...
- Implement logical operators: and, or, not
- Add unit tests for filter expression DSL
- Update project dependencies to include Kotlin stdlib
examples:
https://github.com/Ahoo-Wang/spring-ai/blob/FilterExpressionDsl/spring-ai-vector-store/src/test/kotlin/org/springframework/ai/vectorstore/filter/FilterExpressionDslTest.kt
@Test
fun complexDsl() {
val filterExpression = filterExpression {
"field1".eq("value1")
and {
"field2".ne("value2")
"field3".gt(3)
"field4".gte(4)
or {
"field5".lt(5)
"field6".lte(6)
}
}
}
assertThat(filterExpression).isEqualTo(
builder.and(
builder.eq("field1", "value1"),
builder.and(
builder.and(
builder.and(
builder.ne("field2", "value2"),
builder.gt("field3", 3),
),
builder.gte("field4", 4)
),
builder.or(
builder.lt("field5", 5),
builder.lte("field6", 6)
)
)
).build()
)
}