diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java index f1df017..d05f562 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java @@ -94,6 +94,9 @@ public class MilvusConverter { for (Field field : fields) { MilvusField fieldAnnotation = field.getAnnotation(MilvusField.class); if (Objects.isNull(fieldAnnotation)) { + if (collectionAnnotation.enableDynamicField()) { + propertyCache.functionToPropertyMap.put("$meta", "$meta"); + } continue; } // 处理字段名,优先使用注解中的字段名,若无则用反射获取的字段名 diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/SearchRespConverter.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/SearchRespConverter.java index dc4fcfc..0cb51f6 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/SearchRespConverter.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/SearchRespConverter.java @@ -41,7 +41,13 @@ public class SearchRespConverter { Map entityMap = new HashMap<>(); for (Map.Entry entry : searchResult.getEntity().entrySet()) { String key = propertyCache.findKeyByValue(entry.getKey()); - if(key!=null){ + if (conversionCache.getMilvusEntity().getEnableDynamicField() + && "$meta".equals(entry.getKey())) { + if (entry.getValue() == null) { + continue; + } + entityMap.putAll(GsonUtil.fromJsonToMap(entry.getValue().toString())); + } else if(key!=null){ Object value = entry.getValue(); entityMap.put(key,value); }