From 01158bd39ab38d916bafc37e567d173f45a84957 Mon Sep 17 00:00:00 2001 From: xgc Date: Tue, 14 May 2024 21:02:12 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=EF=BC=8C=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=87=BAcore=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=A2=9E=E5=8A=A0core-?= =?UTF-8?q?demo,=E4=BB=A5=E4=BE=BF=E7=94=A8=E6=88=B7=E6=9B=B4=E7=81=B5?= =?UTF-8?q?=E6=B4=BB=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- milvus-core-demo/pom.xml | 67 ++++++ .../javpower/milvus/demo/java/JavaTest.java | 39 ++++ .../javpower/milvus/demo/model/Face.java | 0 milvus-plus-boot-starter/pom.xml | 38 +--- .../milvus/plus/config/MilvusConfig.java | 32 --- .../{config => entity}/MilvusProperties.java | 2 +- .../milvus/plus/mapper/MilvusMapper.java | 15 ++ .../milvus/plus/service/MilvusInit.java | 41 ++++ milvus-plus-core/pom.xml | 197 ++++++++++++++++++ .../milvus/plus/annotation/ExtraParam.java | 0 .../plus/annotation/MilvusCollection.java | 0 .../milvus/plus/annotation/MilvusField.java | 0 .../milvus/plus/annotation/MilvusIndex.java | 0 .../plus/builder/CollectionSchemaBuilder.java | 0 .../plus/cache/CollectionToPrimaryCache.java | 0 .../milvus/plus/cache/ConversionCache.java | 0 .../milvus/plus/cache/MilvusCache.java | 0 .../milvus/plus/cache/PropertyCache.java | 0 .../plus/converter/MilvusEntityConverter.java | 0 .../plus/converter/SearchRespConverter.java | 0 .../milvus/plus/core/FieldFunction.java | 0 .../core/conditions/AbstractChainWrapper.java | 0 .../core/conditions/ConditionBuilder.java | 0 .../core/conditions/LambdaDeleteWrapper.java | 0 .../core/conditions/LambdaInsertWrapper.java | 0 .../core/conditions/LambdaQueryWrapper.java | 0 .../core/conditions/LambdaUpdateWrapper.java | 0 .../milvus/plus/core/conditions/Wrapper.java | 0 .../plus/core/mapper/BaseMilvusMapper.java | 12 +- .../milvus/plus/model/MilvusEntity.java | 0 .../milvus/plus/model/MilvusField.java | 0 .../milvus/plus/model/MilvusProperties.java | 16 ++ .../milvus/plus/model/vo/MilvusResp.java | 0 .../milvus/plus/model/vo/MilvusResult.java | 0 .../service/AbstractMilvusClientBuilder.java | 72 ++++--- .../plus/service/MilvusClientBuilder.java | 9 + .../plus/service/impl/MilvusClientBuild.java | 12 ++ {milvus-demo => milvus-spring-demo}/pom.xml | 6 +- .../milvus/demo/ApplicationRunnerTest.java | 0 .../milvus/demo/MilvusDemoApplication.java | 0 .../javpower/milvus/demo/model/Face.java | 38 ++++ .../milvus/demo/test/FaceMilvusMapper.java | 2 +- .../src/main/resources/application.yml | 4 +- pom.xml | 4 +- 44 files changed, 502 insertions(+), 104 deletions(-) create mode 100644 milvus-core-demo/pom.xml create mode 100644 milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/java/JavaTest.java rename {milvus-demo => milvus-core-demo}/src/main/java/io/github/javpower/milvus/demo/model/Face.java (100%) delete mode 100644 milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusConfig.java rename milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/{config => entity}/MilvusProperties.java (89%) create mode 100644 milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/mapper/MilvusMapper.java create mode 100644 milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/service/MilvusInit.java create mode 100644 milvus-plus-core/pom.xml rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/annotation/ExtraParam.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusCollection.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusField.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusIndex.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/builder/CollectionSchemaBuilder.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/cache/CollectionToPrimaryCache.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/cache/ConversionCache.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/cache/MilvusCache.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/cache/PropertyCache.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/converter/MilvusEntityConverter.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/converter/SearchRespConverter.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/FieldFunction.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/AbstractChainWrapper.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/ConditionBuilder.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaDeleteWrapper.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaInsertWrapper.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaQueryWrapper.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaUpdateWrapper.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/core/conditions/Wrapper.java (100%) rename milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/mapper/MilvusMapper.java => milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/mapper/BaseMilvusMapper.java (91%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/model/MilvusEntity.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/model/MilvusField.java (100%) create mode 100644 milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusProperties.java rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResp.java (100%) rename {milvus-plus-boot-starter => milvus-plus-core}/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResult.java (100%) rename milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusInit.java => milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/AbstractMilvusClientBuilder.java (81%) create mode 100644 milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/MilvusClientBuilder.java create mode 100644 milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/impl/MilvusClientBuild.java rename {milvus-demo => milvus-spring-demo}/pom.xml (95%) rename {milvus-demo => milvus-spring-demo}/src/main/java/io/github/javpower/milvus/demo/ApplicationRunnerTest.java (100%) rename {milvus-demo => milvus-spring-demo}/src/main/java/io/github/javpower/milvus/demo/MilvusDemoApplication.java (100%) create mode 100644 milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java rename {milvus-demo => milvus-spring-demo}/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java (77%) rename {milvus-demo => milvus-spring-demo}/src/main/resources/application.yml (54%) diff --git a/milvus-core-demo/pom.xml b/milvus-core-demo/pom.xml new file mode 100644 index 0000000..910b196 --- /dev/null +++ b/milvus-core-demo/pom.xml @@ -0,0 +1,67 @@ + + + 4.0.0 + io.github.javpower + milvus-core-demo + 0.0.1-SNAPSHOT + milvus-core-demo + milvus-core-demo + + 1.8 + UTF-8 + UTF-8 + 2.6.13 + + + + io.github.javpower + milvus-plus-core + 2.4.0-SNAPSHOT + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + io.github.javpower.milvus.demo.MilvusDemoApplication + true + + + + repackage + + repackage + + + + + + + + diff --git a/milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/java/JavaTest.java b/milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/java/JavaTest.java new file mode 100644 index 0000000..698c60d --- /dev/null +++ b/milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/java/JavaTest.java @@ -0,0 +1,39 @@ +package io.github.javpower.milvus.demo.java; + +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; +import io.github.javpower.milvus.demo.model.Face; +import io.github.javpower.milvus.plus.core.mapper.BaseMilvusMapper; +import io.github.javpower.milvus.plus.model.MilvusProperties; +import io.github.javpower.milvus.plus.model.vo.MilvusResp; +import io.github.javpower.milvus.plus.model.vo.MilvusResult; +import io.github.javpower.milvus.plus.service.impl.MilvusClientBuild; +import io.milvus.v2.client.MilvusClientV2; + +import java.util.List; + +public class JavaTest { + public static void main(String[] args) throws InterruptedException { + MilvusProperties properties=new MilvusProperties(); + properties.setEnable(true); + properties.setUri("xxxxx"); + properties.setToken("xxxx"); + properties.setPackages(Lists.newArrayList("io.github.javpower.milvus.demo.model")); + MilvusClientBuild build = new MilvusClientBuild(properties); + build.initialize(); + MilvusClientV2 client = build.getClient(); + BaseMilvusMapper mapper=new BaseMilvusMapper() { + @Override + public MilvusClientV2 getClient() { + return client; + } + }; + //标量查询 + MilvusResp>> query2 = mapper.queryWrapper() + .eq(Face::getPersonId, 2L) + .topK(3) + .query(); + System.out.println("标量查询 query--queryWrapper---{}"+JSONObject.toJSONString(query2)); + build.close(); + } +} diff --git a/milvus-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java b/milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java similarity index 100% rename from milvus-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java rename to milvus-core-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java diff --git a/milvus-plus-boot-starter/pom.xml b/milvus-plus-boot-starter/pom.xml index 1bc21a6..2062bec 100644 --- a/milvus-plus-boot-starter/pom.xml +++ b/milvus-plus-boot-starter/pom.xml @@ -45,41 +45,9 @@ spring-boot-starter-web - com.google.protobuf - protobuf-java - 3.24.0 - - - org.projectlombok - lombok - 1.18.22 - - - io.milvus - milvus-sdk-java - 2.4.0 - - - org.apache.logging.log4j - log4j-slf4j-impl - - - org.apache.hadoop - hadoop-client - - - com.fasterxml.jackson.dataformat - jackson-dataformat-csv - - - com.azure - azure-storage-blob - - - com.azure - azure-identity - - + io.github.javpower + milvus-plus-core + 2.4.0-SNAPSHOT net.dreamlu diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusConfig.java b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusConfig.java deleted file mode 100644 index f77ce28..0000000 --- a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusConfig.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.github.javpower.milvus.plus.config; - -import io.milvus.v2.client.ConnectConfig; -import io.milvus.v2.client.MilvusClientV2; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author xgc - **/ -@Configuration -public class MilvusConfig { - - private final MilvusProperties properties; - - public MilvusConfig(MilvusProperties properties) { - this.properties = properties; - } - - @Bean - public MilvusClientV2 milvusClientV2() { - if(!properties.isEnable()){ - return null; - } - ConnectConfig connectConfig = ConnectConfig.builder() - .uri(properties.getUri()) - .token(properties.getToken()) - .build(); - return new MilvusClientV2(connectConfig); - } - -} diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusProperties.java b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/entity/MilvusProperties.java similarity index 89% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusProperties.java rename to milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/entity/MilvusProperties.java index 42d7a19..1fcc3ba 100644 --- a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusProperties.java +++ b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/entity/MilvusProperties.java @@ -1,4 +1,4 @@ -package io.github.javpower.milvus.plus.config; +package io.github.javpower.milvus.plus.entity; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/mapper/MilvusMapper.java b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/mapper/MilvusMapper.java new file mode 100644 index 0000000..2cb0a85 --- /dev/null +++ b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/mapper/MilvusMapper.java @@ -0,0 +1,15 @@ +package io.github.javpower.milvus.plus.mapper; + +import io.github.javpower.milvus.plus.core.mapper.BaseMilvusMapper; +import io.github.javpower.milvus.plus.util.SpringUtils; +import io.milvus.v2.client.MilvusClientV2; +import org.springframework.stereotype.Component; + +@Component +public class MilvusMapper extends BaseMilvusMapper { + + @Override + public MilvusClientV2 getClient() { + return SpringUtils.getBean(MilvusClientV2.class); + } +} diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/service/MilvusInit.java b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/service/MilvusInit.java new file mode 100644 index 0000000..2882a5b --- /dev/null +++ b/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/service/MilvusInit.java @@ -0,0 +1,41 @@ +package io.github.javpower.milvus.plus.service; + +import io.github.javpower.milvus.plus.entity.MilvusProperties; +import io.milvus.v2.client.MilvusClientV2; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; + +@Service +public class MilvusInit extends AbstractMilvusClientBuilder { + + @Autowired + private MilvusProperties milvusProperties; + private MilvusClientV2 client; + + // Spring会调用这个方法来初始化client + @PostConstruct + 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(); + } + + // Spring会调用这个方法来关闭client + @PreDestroy + public void close() throws InterruptedException { + super.close(); + } + + @Bean + public MilvusClientV2 milvusClientV2() { + return client; + } + +} \ No newline at end of file diff --git a/milvus-plus-core/pom.xml b/milvus-plus-core/pom.xml new file mode 100644 index 0000000..0ec4536 --- /dev/null +++ b/milvus-plus-core/pom.xml @@ -0,0 +1,197 @@ + + + 4.0.0 + io.github.javpower + milvus-plus-core + 2.4.0-SNAPSHOT + milvus-plus-core + a tool about milvus-plus + https://github.com/javpower/milvus-plus + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + https://github.com/javpower/milvus-plus-boot-starter + scm:git@github.com/javpower/milvus-plus.git + scm:git@github.com/javpower/milvus-plus.git + + + + gc.x + javpower@163.com + https://github.com/javpower + +8 + + + + 1.8 + UTF-8 + UTF-8 + 2.7.13 + 2.3.2 + + + + org.springframework.boot + spring-boot-starter + + + com.google.protobuf + protobuf-java + 3.24.0 + + + org.projectlombok + lombok + 1.18.22 + + + io.milvus + milvus-sdk-java + 2.4.0 + + + org.apache.logging.log4j + log4j-slf4j-impl + + + org.apache.hadoop + hadoop-client + + + com.fasterxml.jackson.dataformat + jackson-dataformat-csv + + + com.azure + azure-storage-blob + + + com.azure + azure-identity + + + + + net.dreamlu + mica-auto + ${mica-auto.vaersion} + provided + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + ossrh + https://s01.oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.7 + true + + ossrh + https://s01.oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + private + true + UTF-8 + UTF-8 + UTF-8 + -Xdoclint:none + + + + package + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.5 + + + sign-artifacts + verify + + sign + + + + + + org.apache.maven.plugins + maven-deploy-plugin + 2.8.2 + + + + + + + diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/ExtraParam.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/ExtraParam.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/ExtraParam.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/ExtraParam.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusCollection.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusCollection.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusCollection.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusCollection.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusField.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusField.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusField.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusField.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusIndex.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusIndex.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusIndex.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/annotation/MilvusIndex.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/builder/CollectionSchemaBuilder.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/builder/CollectionSchemaBuilder.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/builder/CollectionSchemaBuilder.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/builder/CollectionSchemaBuilder.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/CollectionToPrimaryCache.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/CollectionToPrimaryCache.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/CollectionToPrimaryCache.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/CollectionToPrimaryCache.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/ConversionCache.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/ConversionCache.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/ConversionCache.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/ConversionCache.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/MilvusCache.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/MilvusCache.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/MilvusCache.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/MilvusCache.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/PropertyCache.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/PropertyCache.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/cache/PropertyCache.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/cache/PropertyCache.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/converter/MilvusEntityConverter.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/converter/MilvusEntityConverter.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/converter/MilvusEntityConverter.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/converter/MilvusEntityConverter.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/converter/SearchRespConverter.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/converter/SearchRespConverter.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/converter/SearchRespConverter.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/converter/SearchRespConverter.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/FieldFunction.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/FieldFunction.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/FieldFunction.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/FieldFunction.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/AbstractChainWrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/AbstractChainWrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/AbstractChainWrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/AbstractChainWrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/ConditionBuilder.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/ConditionBuilder.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/ConditionBuilder.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/ConditionBuilder.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaDeleteWrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaDeleteWrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaDeleteWrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaDeleteWrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaInsertWrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaInsertWrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaInsertWrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaInsertWrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaQueryWrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaQueryWrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaQueryWrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaQueryWrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaUpdateWrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaUpdateWrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaUpdateWrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/LambdaUpdateWrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/Wrapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/Wrapper.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/conditions/Wrapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/conditions/Wrapper.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/mapper/MilvusMapper.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/mapper/BaseMilvusMapper.java similarity index 91% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/mapper/MilvusMapper.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/mapper/BaseMilvusMapper.java index 8255ede..ca4426c 100644 --- a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/core/mapper/MilvusMapper.java +++ b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/core/mapper/BaseMilvusMapper.java @@ -6,7 +6,6 @@ import io.github.javpower.milvus.plus.cache.MilvusCache; import io.github.javpower.milvus.plus.core.conditions.*; import io.github.javpower.milvus.plus.model.vo.MilvusResp; import io.github.javpower.milvus.plus.model.vo.MilvusResult; -import io.github.javpower.milvus.plus.util.SpringUtils; import io.milvus.v2.client.MilvusClientV2; import io.milvus.v2.service.vector.response.DeleteResp; import io.milvus.v2.service.vector.response.InsertResp; @@ -22,7 +21,11 @@ import java.util.List; * @author xgc **/ @Slf4j -public class MilvusMapper { +public abstract class BaseMilvusMapper { + + + public abstract MilvusClientV2 getClient(); + /** * 创建搜索构建器实例 @@ -91,10 +94,9 @@ public class MilvusMapper { } ConversionCache conversionCache = MilvusCache.milvusCache.get(entityType.getName()); String collectionName = conversionCache == null ? null : conversionCache.getCollectionName(); - // 使用SpringUtil获取MilvusClient实例 - MilvusClientV2 client = SpringUtils.getBean(MilvusClientV2.class); // 初始化构建器实例 - wrapper.init(collectionName, client, conversionCache, entityType); + MilvusClientV2 client = getClient(); + wrapper.init(collectionName,client, conversionCache, entityType); return wrapper.wrapper(); } diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/MilvusEntity.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusEntity.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/MilvusEntity.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusEntity.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/MilvusField.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusField.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/MilvusField.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusField.java diff --git a/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusProperties.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusProperties.java new file mode 100644 index 0000000..bbbfca6 --- /dev/null +++ b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/MilvusProperties.java @@ -0,0 +1,16 @@ +package io.github.javpower.milvus.plus.model; + +import lombok.Data; + +import java.util.List; + +/** + * @author xgc + **/ +@Data +public class MilvusProperties { + private boolean enable; + private String uri; + private String token; + private List packages; +} \ No newline at end of file diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResp.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResp.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResp.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResp.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResult.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResult.java similarity index 100% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResult.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/model/vo/MilvusResult.java diff --git a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusInit.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/AbstractMilvusClientBuilder.java similarity index 81% rename from milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusInit.java rename to milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/AbstractMilvusClientBuilder.java index 9665631..883e9a2 100644 --- a/milvus-plus-boot-starter/src/main/java/io/github/javpower/milvus/plus/config/MilvusInit.java +++ b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/AbstractMilvusClientBuilder.java @@ -1,12 +1,13 @@ -package io.github.javpower.milvus.plus.config; - +package io.github.javpower.milvus.plus.service; import io.github.javpower.milvus.plus.annotation.MilvusCollection; import io.github.javpower.milvus.plus.builder.CollectionSchemaBuilder; import io.github.javpower.milvus.plus.cache.CollectionToPrimaryCache; import io.github.javpower.milvus.plus.converter.MilvusEntityConverter; import io.github.javpower.milvus.plus.model.MilvusEntity; +import io.github.javpower.milvus.plus.model.MilvusProperties; import io.milvus.exception.MilvusException; +import io.milvus.v2.client.ConnectConfig; import io.milvus.v2.client.MilvusClientV2; import io.milvus.v2.common.IndexParam; import io.milvus.v2.service.collection.request.*; @@ -18,7 +19,6 @@ import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.core.type.classreading.CachingMetadataReaderFactory; import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; -import org.springframework.stereotype.Service; import org.springframework.util.ClassUtils; import java.util.ArrayList; @@ -27,18 +27,52 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -/** - * @author xgc - **/ -@Service @Slf4j -public class MilvusInit implements AutoCloseable { +public abstract class AbstractMilvusClientBuilder implements MilvusClientBuilder { + + protected MilvusProperties properties; + + protected MilvusClientV2 client; private final static String CLASS="*.class"; - public final MilvusClientV2 client; - public MilvusInit(MilvusClientV2 client, MilvusProperties properties) { - this.client = client; + public void setProperties(MilvusProperties properties) { + this.properties = properties; + } + + @Override + public void initialize() { + if (properties.isEnable()) { + ConnectConfig connectConfig = ConnectConfig.builder() + .uri(properties.getUri()) + .token(properties.getToken()) + .build(); + client = new MilvusClientV2(connectConfig); + // 初始化逻辑 + handler(); + } + } + + @Override + public void close() throws InterruptedException { + if (client != null) { + //释放集合+释放client + Set co = CollectionToPrimaryCache.collectionToPrimary.keySet(); + if(co.size()>0){ + for (String name : co) { + ReleaseCollectionReq releaseCollectionReq = ReleaseCollectionReq.builder() + .collectionName(name) + .build(); + client.releaseCollection(releaseCollectionReq); + } + } + client.close(100); + + } + } + + + public void handler(){ if(client!=null){ List> classes = getClass(properties.getPackages()); performBusinessLogic(classes); @@ -46,19 +80,10 @@ public class MilvusInit implements AutoCloseable { } @Override - public void close() throws InterruptedException { - //释放集合+释放client - Set co = CollectionToPrimaryCache.collectionToPrimary.keySet(); - if(co.size()>0){ - for (String name : co) { - ReleaseCollectionReq releaseCollectionReq = ReleaseCollectionReq.builder() - .collectionName(name) - .build(); - client.releaseCollection(releaseCollectionReq); - } - } - client.close(10); + public MilvusClientV2 getClient() { + return client; } + //获取指定包下实体类 private List> getClass(List packages){ List> res=new ArrayList<>(); @@ -152,5 +177,4 @@ public class MilvusInit implements AutoCloseable { } } - } \ No newline at end of file diff --git a/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/MilvusClientBuilder.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/MilvusClientBuilder.java new file mode 100644 index 0000000..033b029 --- /dev/null +++ b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/MilvusClientBuilder.java @@ -0,0 +1,9 @@ +package io.github.javpower.milvus.plus.service; + +import io.milvus.v2.client.MilvusClientV2; + +public interface MilvusClientBuilder { + void initialize(); + void close() throws InterruptedException; + MilvusClientV2 getClient(); +} \ No newline at end of file diff --git a/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/impl/MilvusClientBuild.java b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/impl/MilvusClientBuild.java new file mode 100644 index 0000000..0eaf5f7 --- /dev/null +++ b/milvus-plus-core/src/main/java/io/github/javpower/milvus/plus/service/impl/MilvusClientBuild.java @@ -0,0 +1,12 @@ +package io.github.javpower.milvus.plus.service.impl; + +import io.github.javpower.milvus.plus.model.MilvusProperties; +import io.github.javpower.milvus.plus.service.AbstractMilvusClientBuilder; + +public class MilvusClientBuild extends AbstractMilvusClientBuilder { + + public MilvusClientBuild(MilvusProperties properties) { + super.setProperties(properties); + } + +} \ No newline at end of file diff --git a/milvus-demo/pom.xml b/milvus-spring-demo/pom.xml similarity index 95% rename from milvus-demo/pom.xml rename to milvus-spring-demo/pom.xml index da18fa8..285fc9f 100644 --- a/milvus-demo/pom.xml +++ b/milvus-spring-demo/pom.xml @@ -3,10 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 io.github.javpower - milvus-demo + milvus-spring-demo 0.0.1-SNAPSHOT - milvus-demo - milvus-demo + milvus-spring-demo + milvus-spring-demo 1.8 UTF-8 diff --git a/milvus-demo/src/main/java/io/github/javpower/milvus/demo/ApplicationRunnerTest.java b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/ApplicationRunnerTest.java similarity index 100% rename from milvus-demo/src/main/java/io/github/javpower/milvus/demo/ApplicationRunnerTest.java rename to milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/ApplicationRunnerTest.java diff --git a/milvus-demo/src/main/java/io/github/javpower/milvus/demo/MilvusDemoApplication.java b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/MilvusDemoApplication.java similarity index 100% rename from milvus-demo/src/main/java/io/github/javpower/milvus/demo/MilvusDemoApplication.java rename to milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/MilvusDemoApplication.java diff --git a/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java new file mode 100644 index 0000000..645a6f4 --- /dev/null +++ b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/model/Face.java @@ -0,0 +1,38 @@ +package io.github.javpower.milvus.demo.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-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java similarity index 77% rename from milvus-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java rename to milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java index 570ac0e..6971d6f 100644 --- a/milvus-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java +++ b/milvus-spring-demo/src/main/java/io/github/javpower/milvus/demo/test/FaceMilvusMapper.java @@ -1,7 +1,7 @@ package io.github.javpower.milvus.demo.test; import io.github.javpower.milvus.demo.model.Face; -import io.github.javpower.milvus.plus.core.mapper.MilvusMapper; +import io.github.javpower.milvus.plus.mapper.MilvusMapper; import org.springframework.stereotype.Component; @Component diff --git a/milvus-demo/src/main/resources/application.yml b/milvus-spring-demo/src/main/resources/application.yml similarity index 54% rename from milvus-demo/src/main/resources/application.yml rename to milvus-spring-demo/src/main/resources/application.yml index 1be2f8e..db3139c 100644 --- a/milvus-demo/src/main/resources/application.yml +++ b/milvus-spring-demo/src/main/resources/application.yml @@ -2,8 +2,8 @@ server: port: 8131 milvus: - uri: http://xxxxx:19530 - token: root:xxxx + uri: https://in03-a5357975ab80da7.api.gcp-us-west1.zillizcloud.com + token: XXXx enable: true packages: - io.github.javpower.milvus.demo.model \ No newline at end of file diff --git a/pom.xml b/pom.xml index e03019a..4e679af 100644 --- a/pom.xml +++ b/pom.xml @@ -10,8 +10,10 @@ pom - milvus-demo + milvus-core-demo + milvus-spring-demo milvus-plus-boot-starter + milvus-plus-core