SimilaritySearchResult.java 1.61 KB
package com.xly.milvus.bean;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Map;

/**
 * 相似度查询结果实体 - 增强版
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SimilaritySearchResult {
    private Long id;                          // 整数ID
    private String strId;                      // 字符串ID
    private Float score;                       // 相似度得分
    private Double normalizedScore;             // 归一化后的得分(0-1之间)
    private Map<String, Object> fields;        // 字段数据
    private String collectionName;              // 集合名称

    /**
     * 获取ID(优先返回字符串ID,如果没有则返回整数ID)
     */
    public String getId() {
        if (strId != null && !strId.isEmpty()) {
            return strId;
        }
        return id != null ? String.valueOf(id) : null;
    }

    /**
     * 获取字段值
     */
    public Object getField(String fieldName) {
        if (fields != null) {
            return fields.get(fieldName);
        }
        return null;
    }

    /**
     * 获取字符串字段值
     */
    public String getStringField(String fieldName) {
        Object value = getField(fieldName);
        return value != null ? value.toString() : null;
    }

    /**
     * 获取整数字段值
     */
    public Integer getIntField(String fieldName) {
        Object value = getField(fieldName);
        if (value instanceof Number) {
            return ((Number) value).intValue();
        }
        return null;
    }
}