diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/AbstractChainWrapper.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/AbstractChainWrapper.java index 3bbcb33..a100e5c 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/AbstractChainWrapper.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/AbstractChainWrapper.java @@ -1,10 +1,12 @@ package org.dromara.milvus.plus.core.conditions; import lombok.Data; +import lombok.EqualsAndHashCode; import java.util.Iterator; import java.util.NoSuchElementException; +@EqualsAndHashCode(callSuper = true) @Data public abstract class AbstractChainWrapper extends ConditionBuilder{ protected static class ArrayIterator implements Iterator { diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaQueryWrapper.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaQueryWrapper.java index 8934279..7db0a8f 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaQueryWrapper.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaQueryWrapper.java @@ -13,6 +13,7 @@ import io.milvus.v2.service.vector.response.SearchResp; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.dromara.milvus.plus.cache.ConversionCache; import org.dromara.milvus.plus.converter.SearchRespConverter; import org.dromara.milvus.plus.core.FieldFunction; @@ -35,6 +36,7 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr private List outputFields; private Class entityType; private String collectionName; + private String collectionAlias; private List partitionNames = new ArrayList<>(); private String annsField; @@ -60,6 +62,17 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr } + /** + * 添加集合别名 + * + * @param collectionAlias 别名 + * @return this + */ + public LambdaQueryWrapper alias(String collectionAlias) { + this.collectionAlias = collectionAlias; + return this; + } + public LambdaQueryWrapper partition(String... partitionName) { this.partitionNames.addAll(Arrays.asList(partitionName)); return this; @@ -417,7 +430,7 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr */ private SearchReq buildSearch() { SearchReq.SearchReqBuilder builder = SearchReq.builder() - .collectionName(collectionName); + .collectionName(StringUtils.isNotBlank(collectionAlias) ? collectionAlias : collectionName); if (annsField != null && !annsField.isEmpty()) { builder.annsField(annsField); @@ -456,15 +469,15 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr public QueryReq buildQuery() { QueryReq.QueryReqBuilder builder = QueryReq.builder() - .collectionName(collectionName); + .collectionName(StringUtils.isNotBlank(collectionAlias) ? collectionAlias : collectionName); String filterStr = buildFilters(); - if (filterStr != null && !filterStr.isEmpty()) { + if (StringUtils.isNotBlank(filterStr)) { builder.filter(filterStr); } if (topK > 0) { builder.limit(topK); } - if (limit > 0) { + if (limit > 0L) { builder.limit(limit); } if (!CollectionUtils.isEmpty(partitionNames)) { @@ -481,6 +494,7 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr /** * 执行搜索 + * * @return 搜索响应对象 */ public MilvusResp>> query() throws MilvusException { @@ -496,31 +510,34 @@ public class LambdaQueryWrapper extends AbstractChainWrapper implements Wr return SearchRespConverter.convertGetRespToMilvusResp(query, entityType); } } - public MilvusResp>> query(FieldFunction ... outputFields) throws MilvusException{ - List otf=new ArrayList<>(); + + public MilvusResp>> query(FieldFunction... outputFields) throws MilvusException { + List otf = new ArrayList<>(); for (FieldFunction outputField : outputFields) { otf.add(outputField.getFieldName(outputField)); } - this.outputFields=otf; + this.outputFields = otf; return query(); } - public MilvusResp>> query(String ... outputFields) throws MilvusException{ - this.outputFields=Arrays.stream(outputFields).collect(Collectors.toList()); + + public MilvusResp>> query(String... outputFields) throws MilvusException { + this.outputFields = Arrays.stream(outputFields).collect(Collectors.toList()); return query(); } - public MilvusResp>> getById(Serializable ... ids){ + + public MilvusResp>> getById(Serializable... ids) { GetReq.GetReqBuilder builder = GetReq.builder() .collectionName(collectionName) .ids(Arrays.asList(ids)); - if(!CollectionUtils.isEmpty(partitionNames)){ + if (!CollectionUtils.isEmpty(partitionNames)) { builder.partitionName(partitionNames.get(0)); } - GetReq getReq = builder - .build(); + GetReq getReq = builder.build(); GetResp getResp = client.get(getReq); return SearchRespConverter.convertGetRespToMilvusResp(getResp, entityType); } + @Override public void init(String collectionName, MilvusClientV2 client, ConversionCache conversionCache, Class entityType) { setClient(client); diff --git a/milvus-spring-demo/src/main/java/org/dromara/milvus/demo/ApplicationRunnerTest.java b/milvus-spring-demo/src/main/java/org/dromara/milvus/demo/ApplicationRunnerTest.java index eaf3da7..b370371 100644 --- a/milvus-spring-demo/src/main/java/org/dromara/milvus/demo/ApplicationRunnerTest.java +++ b/milvus-spring-demo/src/main/java/org/dromara/milvus/demo/ApplicationRunnerTest.java @@ -64,7 +64,7 @@ public class ApplicationRunnerTest implements ApplicationRunner { List vector = IntStream.range(0, 128) .mapToObj(i -> (float) (Math.random() * 100)) .collect(Collectors.toList()); - MilvusResp>> query1 = mapper.queryWrapper() + MilvusResp>> query1 = mapper.queryWrapper().alias("alias_face") .vector(Face::getFaceVector, vector) .like(Face::getPersonName, "张三") .topK(3)