!53 支持动态字段插入功能 & MilvusField 支持分区键为true时, 设置集合分区数量

Merge pull request !53 from CodeYuan-Y/main
This commit is contained in:
xgc 2025-09-28 01:15:44 +00:00 committed by Gitee
commit 9f4f92871b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 23 additions and 1 deletions

View File

@ -75,6 +75,11 @@ public @interface MilvusField {
*/
boolean isPartitionKey() default false;
/**
* 分区键为true时, 分区数量
*/
int numPartitions() default -1;
/**
* 启动分析器
*/

View File

@ -21,6 +21,7 @@ public class CollectionSchemaBuilder {
private ConsistencyLevel consistencyLevel=ConsistencyLevel.BOUNDED;
private Boolean enableDynamicField=false;
private List<CreateCollectionReq.Function> functions;
private Integer numPartitions;
public CollectionSchemaBuilder(Boolean enableDynamicField,String collectionName, MilvusClientV2 wrapper) {
@ -51,6 +52,14 @@ public class CollectionSchemaBuilder {
schema.addFunction(function);
}
}
public void addNumPartitions(Integer numPartitions){
if (numPartitions < 1) {
return;
}
this.numPartitions=numPartitions;
}
public void addConsistencyLevel(ConsistencyLevel level){
this.consistencyLevel=level;
}
@ -63,7 +72,8 @@ public class CollectionSchemaBuilder {
collectionName(this.collectionName).
collectionSchema(this.schema).
consistencyLevel(this.consistencyLevel).
enableDynamicField(this.enableDynamicField)
enableDynamicField(this.enableDynamicField).
numPartitions(this.numPartitions)
.build();
wrapper.createCollection(req);
}

View File

@ -106,6 +106,9 @@ public class MilvusConverter {
if (fieldAnnotation.isPrimaryKey()) {
CollectionToPrimaryCache.collectionToPrimary.put(collectionName, fieldName);
}
if (fieldAnnotation.isPartitionKey()) {
milvus.setNumPartitions(fieldAnnotation.numPartitions());
}
// 构建Milvus字段描述
AddFieldReq.AddFieldReqBuilder<?, ?> builder = AddFieldReq.builder()
.fieldName(fieldName)
@ -263,6 +266,7 @@ public class MilvusConverter {
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
schemaBuilder.addFun(milvusEntity.getFunctions());
schemaBuilder.addNumPartitions(milvusEntity.getNumPartitions());
log.info("-------create schema---------");
schemaBuilder.createSchema();
log.info("-------create schema fun---------");

View File

@ -116,6 +116,8 @@ public class LambdaInsertWrapper<T> extends AbstractChainWrapper<T> implements
String tk = propertyCache.functionToPropertyMap.get(key);
if (StringUtils.isNotEmpty(tk)) {
GsonUtil.put(jsonObject,tk,value);
} else if (conversionCache.getMilvusEntity().getEnableDynamicField()){
GsonUtil.put(jsonObject,key,value);
}
}
if(conversionCache.isAutoID()){

View File

@ -21,4 +21,5 @@ public class MilvusEntity {
private ConsistencyLevel consistencyLevel;
private Boolean enableDynamicField;
private List<CreateCollectionReq.Function> functions;
private Integer numPartitions;
}