parent
558828bb00
commit
801e4d585a
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in new issue