main
HuangHai 2 months ago
parent 558828bb00
commit 801e4d585a

@ -3,7 +3,7 @@ package com.dsideal.gw.Handler;
import com.dsideal.gw.Bean.RetBean;
import com.dsideal.gw.GwApplication;
import com.dsideal.gw.Util.JwtUtil;
import com.dsideal.gw.Config.GatewayConfig;
import com.dsideal.Config.GatewayConfig;
import com.jfinal.handler.Handler;
import com.jfinal.kit.StrKit;
import com.jfinal.upload.MultipartRequest;

@ -0,0 +1,64 @@
package com.dsideal.Res.Milvus.Controller;
import com.dsideal.Config.PropKit;
import com.dsideal.Res.Plugin.MilvusPlugin;
import com.dsideal.Res.ResApplication;
import com.jfinal.core.Controller;
import com.jfinal.kit.Ret;
import io.milvus.client.MilvusServiceClient;
import io.milvus.common.clientenum.ConsistencyLevelEnum;
import io.milvus.grpc.SearchResults;
import io.milvus.param.MetricType;
import io.milvus.param.R;
import io.milvus.param.collection.LoadCollectionParam;
import io.milvus.param.dml.SearchParam;
import io.milvus.response.SearchResultsWrapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.List;
public class MilvusDemoController extends Controller {
private final MilvusPlugin milvusPlugin = MilvusPlugin.getInstance();
private static final Logger logger = LoggerFactory.getLogger(MilvusDemoController.class);
public void index() {
try {
MilvusServiceClient client = milvusPlugin.getClient();
String collectionName = PropKit.get("milvus.ms_collection_name");
// 加载集合
client.loadCollection(
LoadCollectionParam.newBuilder()
.withCollectionName(collectionName)
.build()
);
// 示例:搜索向量
List<List<Float>> vectors = Arrays.asList(
Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f) // 示例向量,需要根据实际维度调整
);
SearchParam searchParam = SearchParam.newBuilder()
.withCollectionName(collectionName)
.withConsistencyLevel(ConsistencyLevelEnum.STRONG)
.withMetricType(MetricType.L2)
.withOutFields(Arrays.asList("field1", "field2"))
.withTopK(5)
.withVectors(vectors)
.withVectorFieldName("vector_field")
.build();
// 修改这行代码
R<SearchResults> searchResponse = client.search(searchParam);
SearchResultsWrapper wrapper = new SearchResultsWrapper(searchResponse.getData());
// 返回搜索结果
renderJson(wrapper.getIDScore(0));
} catch (Exception e) {
logger.error("Milvus查询失败", e);
renderJson(Ret.fail("msg", "查询失败:" + e.getMessage()));
}
}
}

@ -0,0 +1,44 @@
package com.dsideal.Res.Plugin;
import io.milvus.client.MilvusServiceClient;
import io.milvus.param.ConnectParam;
import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Getter
public class MilvusPlugin {
private static MilvusPlugin instance;
private MilvusServiceClient client;
private static final Logger logger = LoggerFactory.getLogger(MilvusPlugin.class);
private MilvusPlugin() {}
public static MilvusPlugin getInstance() {
if (instance == null) {
instance = new MilvusPlugin();
}
return instance;
}
public void init(String host, int port, int maxConnections) {
try {
ConnectParam connectParam = ConnectParam.newBuilder()
.withHost(host)
.withPort(port)
.build();
client = new MilvusServiceClient(connectParam);
logger.info("Milvus连接成功");
} catch (Exception e) {
logger.error("Milvus初始化失败: " + e.getMessage(), e);
throw new RuntimeException("Milvus初始化失败", e);
}
}
public void close() {
if (client != null) {
client.close();
}
}
}

@ -5,8 +5,10 @@ import com.dsideal.Config.PropKit;
import com.dsideal.Res.Base.Controller.BaseController;
import com.dsideal.Res.Index.IndexController;
import com.dsideal.Res.Interceptor.*;
import com.dsideal.Res.Milvus.Controller.MilvusDemoController;
import com.dsideal.Res.Model._MappingKit;
import com.dsideal.Res.Neo4j.Controller.Neo4jDemoController;
import com.dsideal.Res.Plugin.MilvusPlugin;
import com.dsideal.Res.Plugin.Neo4jPlugin;
import com.dsideal.Res.Res.Controller.ResourceController;
import com.dsideal.Res.Util.LogBackLogFactory;
@ -27,6 +29,7 @@ public class ResApplication extends JFinalConfig {
private static final Neo4jPlugin neo4jPlugin = Neo4jPlugin.getInstance();
private static final Logger logger = LoggerFactory.getLogger(ResApplication.class);
private final MilvusPlugin milvusPlugin = MilvusPlugin.getInstance();
public static void main(String[] args) {
System.out.println("当前环境: " + PropKit.getEnvPrefix());
@ -53,6 +56,7 @@ public class ResApplication extends JFinalConfig {
me.add("/res", ResourceController.class);
//Neo4j测试
me.add("/neo4j", Neo4jDemoController.class);
me.add("/milvus", MilvusDemoController.class);
}
@Override
@ -105,6 +109,19 @@ public class ResApplication extends JFinalConfig {
logger.error("Neo4j配置失败", e);
throw new RuntimeException("Neo4j配置失败", e);
}
// 配置 Milvus
try {
String host = PropKit.get("milvus.ms_host");
int port = PropKit.getInt("milvus.ms_port");
int maxConnections = PropKit.getInt("milvus.ms_max_connections");
logger.info("正在初始化Milvus连接: host={}, port={}", host, port);
milvusPlugin.init(host, port, maxConnections);
} catch (Exception e) {
logger.error("Milvus配置失败", e);
throw new RuntimeException("Milvus配置失败", e);
}
}
/**
@ -152,5 +169,6 @@ public class ResApplication extends JFinalConfig {
public void onStop() {
// JFinal 停止时关闭 Neo4j 连接
neo4jPlugin.close();
milvusPlugin.close();
}
}

@ -68,4 +68,6 @@ mivlus:
# Milvus 服务器的端口号
ms_port: 19530
# Milvus 集合的名称
ms_collection_name: ds_collection
ms_collection_name: ds_collection
# Milvus 连接池的最大连接数
ms_max_connections: 50

@ -68,4 +68,6 @@ mivlus:
# Milvus 服务器的端口号
ms_port: 19530
# Milvus 集合的名称
ms_collection_name: ds_collection
ms_collection_name: ds_collection
# Milvus 连接池的最大连接数
ms_max_connections: 50
Loading…
Cancel
Save