diff --git a/milvus-plus-core/pom.xml b/milvus-plus-core/pom.xml
index 0ec4536..ee08b11 100644
--- a/milvus-plus-core/pom.xml
+++ b/milvus-plus-core/pom.xml
@@ -6,7 +6,7 @@
milvus-plus-core
2.4.0-SNAPSHOT
milvus-plus-core
- a tool about milvus-plus
+ a tool about milvus-plus-core
https://github.com/javpower/milvus-plus
diff --git a/milvus-plus-solon-starter/.gitignore b/milvus-plus-solon-starter/.gitignore
new file mode 100755
index 0000000..cf2a19c
--- /dev/null
+++ b/milvus-plus-solon-starter/.gitignore
@@ -0,0 +1,29 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+*.log
+*.flattened-pom.xml
+
+### NetBeans ###
+nbproject/private/
+build/
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+### Mac files ###
+*.DS_Store
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/pom.xml b/milvus-plus-solon-starter/pom.xml
new file mode 100755
index 0000000..e5bccc5
--- /dev/null
+++ b/milvus-plus-solon-starter/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+
+ org.noear
+ solon-parent
+ 2.7.6
+
+
+
+ io.github.javpower
+ milvus-plus-solon-starter
+ 1.0
+
+ jar
+
+ milvus-plus-solon-starter
+
+
+ 1.8
+
+
+
+
+ io.github.javpower
+ milvus-plus-core
+ 2.4.0-SNAPSHOT
+
+
+ org.noear
+ solon-web
+
+
+
+ org.noear
+ solon.logging.logback
+
+
+
+ org.noear
+ solon-test
+ test
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.noear
+ solon-maven-plugin
+
+
+
+
+
+
+ tencent
+ https://mirrors.cloud.tencent.com/nexus/repository/maven-public/
+
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/App.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/App.java
new file mode 100755
index 0000000..c3fa580
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/App.java
@@ -0,0 +1,11 @@
+package io.github.javpower.solon;
+
+import org.noear.solon.Solon;
+import org.noear.solon.annotation.SolonMain;
+
+@SolonMain
+public class App {
+ public static void main(String[] args) {
+ Solon.start(App.class, args);
+ }
+}
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/DemoController.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/DemoController.java
new file mode 100755
index 0000000..29bd46f
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/DemoController.java
@@ -0,0 +1,79 @@
+package io.github.javpower.solon;
+
+import com.alibaba.fastjson.JSONObject;
+import io.github.javpower.milvus.plus.model.vo.MilvusResp;
+import io.github.javpower.milvus.plus.model.vo.MilvusResult;
+import io.github.javpower.solon.test.model.Face;
+import io.github.javpower.solon.test.test.FaceMilvusMapper;
+import io.milvus.v2.service.vector.response.DeleteResp;
+import io.milvus.v2.service.vector.response.InsertResp;
+import io.milvus.v2.service.vector.response.UpsertResp;
+import lombok.extern.slf4j.Slf4j;
+import org.noear.solon.annotation.Controller;
+import org.noear.solon.annotation.Get;
+import org.noear.solon.annotation.Inject;
+import org.noear.solon.annotation.Mapping;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller
+@Slf4j
+public class DemoController {
+ @Inject
+ FaceMilvusMapper mapper;
+ @Mapping("/test")
+ @Get
+ public void hello() {
+ Face face=new Face();
+ List vector = new ArrayList<>();
+ for (int i = 0; i < 128; i++) {
+ vector.add((float) (Math.random() * 100)); // 这里仅作为示例使用随机数
+ }
+ face.setPersonId(1l);
+ face.setFaceVector(vector);
+ //新增
+ List faces=new ArrayList<>();
+ for (int i = 1; i < 10 ;i++){
+ Face face1=new Face();
+ face1.setPersonId(Long.valueOf(i));
+ List vector1 = new ArrayList<>();
+ for (int j = 0; j < 128; j++) {
+ vector1.add((float) (Math.random() * 100)); // 这里仅作为示例使用随机数
+ }
+ face1.setFaceVector(vector1);
+ faces.add(face1);
+ }
+ MilvusResp insert = mapper.insert(faces.toArray(faces.toArray(new Face[0]))); log.info("insert--{}", JSONObject.toJSONString(insert));
+ //id查询
+ MilvusResp>> query = mapper.getById(9l);
+ log.info("query--getById---{}", JSONObject.toJSONString(query));
+ //向量查询
+ MilvusResp>> query1 = mapper.queryWrapper()
+ .vector(Face::getFaceVector, vector)
+ .ne(Face::getPersonId, 1L)
+ .topK(3)
+ .query();
+ log.info("向量查询 query--queryWrapper---{}", JSONObject.toJSONString(query1));
+ //标量查询
+ MilvusResp>> query2 = mapper.queryWrapper()
+ .eq(Face::getPersonId, 2L)
+ .topK(3)
+ .query();
+ log.info("标量查询 query--queryWrapper---{}", JSONObject.toJSONString(query2));
+ //更新
+ vector.clear();
+ for (int i = 0; i < 128; i++) {
+ vector.add((float) (Math.random() * 100)); // 这里仅作为示例使用随机数
+ }
+ MilvusResp update = mapper.updateById(face);log.info("update--{}", JSONObject.toJSONString(update));
+ //id查询
+ MilvusResp>> query3 = mapper.getById(1L);log.info("query--getById---{}", JSONObject.toJSONString(query3));
+ //删除
+ MilvusResp remove = mapper.removeById(1L);log.info("remove--{}", JSONObject.toJSONString(remove));
+ //查询
+ MilvusResp>> query4 = mapper.getById(1L);log.info("query--{}", JSONObject.toJSONString(query4));
+
+
+ }
+}
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/entity/MilvusProperties.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/entity/MilvusProperties.java
new file mode 100644
index 0000000..fdcbaf2
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/entity/MilvusProperties.java
@@ -0,0 +1,25 @@
+package io.github.javpower.solon.entity;
+
+
+
+import lombok.Data;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Inject;
+
+import java.util.List;
+
+/**
+ * @author xgc
+ **/
+@Data
+@Component
+public class MilvusProperties {
+ @Inject("${milvus.enable}")
+ private boolean enable;
+ @Inject("${milvus.uri}")
+ private String uri;
+ @Inject("${milvus.token}")
+ private String token;
+ @Inject("${milvus.packages}")
+ private List packages;
+}
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/mapper/MilvusMapper.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/mapper/MilvusMapper.java
new file mode 100644
index 0000000..601dd2f
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/mapper/MilvusMapper.java
@@ -0,0 +1,14 @@
+package io.github.javpower.solon.mapper;
+
+import io.github.javpower.milvus.plus.core.mapper.BaseMilvusMapper;
+import io.github.javpower.solon.service.MilvusInit;
+import io.milvus.v2.client.MilvusClientV2;
+
+
+public class MilvusMapper extends BaseMilvusMapper {
+
+ @Override
+ public MilvusClientV2 getClient() {
+ return MilvusInit.client;
+ }
+}
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/service/MilvusInit.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/service/MilvusInit.java
new file mode 100644
index 0000000..895a36e
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/service/MilvusInit.java
@@ -0,0 +1,40 @@
+package io.github.javpower.solon.service;
+
+import io.github.javpower.milvus.plus.service.AbstractMilvusClientBuilder;
+import io.github.javpower.solon.entity.MilvusProperties;
+import io.milvus.v2.client.MilvusClientV2;
+import org.noear.solon.annotation.Component;
+import org.noear.solon.annotation.Init;
+import org.noear.solon.annotation.Inject;
+import org.noear.solon.core.bean.LifecycleBean;
+import org.springframework.beans.BeanUtils;
+
+@Component
+public class MilvusInit extends AbstractMilvusClientBuilder implements LifecycleBean {
+
+
+ public static MilvusClientV2 client;
+ @Inject
+ MilvusProperties milvusProperties;
+
+ // Spring会调用这个方法来初始化client
+ @Init
+ public void initialize() {
+ io.github.javpower.milvus.plus.model.MilvusProperties milvusProperties1=new io.github.javpower.milvus.plus.model.MilvusProperties();
+ BeanUtils.copyProperties(milvusProperties,milvusProperties1);
+ super.setProperties(milvusProperties1);
+ super.initialize();
+ client = getClient();
+ }
+
+ @Override
+ public void start() throws Throwable {
+
+ }
+
+ @Override
+ public void stop() throws Throwable {
+ super.close();
+ LifecycleBean.super.stop();
+ }
+}
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/model/Face.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/model/Face.java
new file mode 100644
index 0000000..6161a82
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/model/Face.java
@@ -0,0 +1,38 @@
+package io.github.javpower.solon.test.model;
+
+import io.github.javpower.milvus.plus.annotation.ExtraParam;
+import io.github.javpower.milvus.plus.annotation.MilvusCollection;
+import io.github.javpower.milvus.plus.annotation.MilvusField;
+import io.github.javpower.milvus.plus.annotation.MilvusIndex;
+import io.milvus.v2.common.DataType;
+import io.milvus.v2.common.IndexParam;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@MilvusCollection(name = "face_collection") // 指定Milvus集合的名称
+public class Face {
+ @MilvusField(
+ name = "person_id", // 字段名称
+ dataType = DataType.Int64, // 数据类型为64位整数
+ isPrimaryKey = true, // 标记为主键
+ autoID = false // 假设这个ID是自动生成的
+ )
+ private Long personId; // 人员的唯一标识符
+
+ @MilvusField(
+ name = "face_vector", // 字段名称
+ dataType = DataType.FloatVector, // 数据类型为浮点型向量
+ dimension = 128 // 向量维度,假设人脸特征向量的维度是128
+ )
+ @MilvusIndex(
+ indexType = IndexParam.IndexType.IVF_FLAT, // 使用IVF_FLAT索引类型
+ metricType = IndexParam.MetricType.L2, // 使用L2距离度量类型
+ indexName = "face_index", // 索引名称
+ extraParams = { // 指定额外的索引参数
+ @ExtraParam(key = "nlist", value = "100") // 例如,IVF的nlist参数
+ }
+ )
+ private List faceVector; // 存储人脸特征的向量
+}
\ No newline at end of file
diff --git a/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/test/FaceMilvusMapper.java b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/test/FaceMilvusMapper.java
new file mode 100644
index 0000000..69298af
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/java/io/github/javpower/solon/test/test/FaceMilvusMapper.java
@@ -0,0 +1,11 @@
+package io.github.javpower.solon.test.test;
+
+
+import io.github.javpower.solon.mapper.MilvusMapper;
+import io.github.javpower.solon.test.model.Face;
+import org.noear.solon.annotation.Component;
+
+@Component
+public class FaceMilvusMapper extends MilvusMapper {
+
+}
diff --git a/milvus-plus-solon-starter/src/main/resources/app.yml b/milvus-plus-solon-starter/src/main/resources/app.yml
new file mode 100755
index 0000000..33532f6
--- /dev/null
+++ b/milvus-plus-solon-starter/src/main/resources/app.yml
@@ -0,0 +1,13 @@
+server.port: 8880
+
+solon.app:
+ name: 'milvus-plus-solon'
+ group: 'milvus'
+
+
+milvus:
+ uri: https://in03-a5357975ab80da7.api.gcp-us-west1.zillizcloud.com
+ token: xxx
+ enable: true
+ packages:
+ - io.github.javpower.solon.test.model
\ No newline at end of file
diff --git a/milvus-spring-demo/src/main/resources/application.yml b/milvus-spring-demo/src/main/resources/application.yml
index db3139c..91c36a6 100644
--- a/milvus-spring-demo/src/main/resources/application.yml
+++ b/milvus-spring-demo/src/main/resources/application.yml
@@ -3,7 +3,7 @@ server:
milvus:
uri: https://in03-a5357975ab80da7.api.gcp-us-west1.zillizcloud.com
- token: XXXx
+ token: 6fab5641a3156d2666feba14390e4ef4b6d376b5dce91faed303eec91a4bdb82239b70b29eb252b981daa3170516245818d4ee12
enable: true
packages:
- io.github.javpower.milvus.demo.model
\ No newline at end of file