spring-ai icon indicating copy to clipboard operation
spring-ai copied to clipboard

feat(vectorstore): add kotlin filter expression DSL for vector store

Open Ahoo-Wang opened this issue 7 months ago • 0 comments

  • 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()
		)
	}

Ahoo-Wang avatar Apr 14 '25 14:04 Ahoo-Wang