本文介绍如何使用Java SDK对智能召回引擎进行读写操作。
前提条件
已完成Java SDK安装。更多信息,请参见 安装Java SDK。
示例代码
本示例中,初始化智能召回引擎的客户端,并调用接口完成对服务的查询操作,对详情表的写操作。示例如下:
package com.aliyuncs.be.client;
import com.aliyuncs.be.client.exception.InvalidParameterException;
import com.aliyuncs.be.client.protocol.BeWriteType;
import com.aliyuncs.be.client.protocol.RecallParam;
import com.aliyuncs.be.client.protocol.RecallType;
import com.aliyuncs.be.client.protocol.clause.FilterClause;
import com.aliyuncs.be.client.protocol.clause.FilterOperator;
import com.aliyuncs.be.client.protocol.clause.SingleFilter;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
@Slf4j
public class AimeDemo {
public static void main(String[] args) throws InvalidParameterException {
BeClient client = new BeClient("http://be-cn-xxxx.be.aliyuncs.com", 80, "username", "password");
// x2i召回
RecallParam x2iRecallParam = RecallParam.builder().recallType(RecallType.X2I)
.triggerItems(Lists.newArrayList("100:1", "200:1"))
.build();
BeReadRequest x2iRequest = BeReadRequest.builder()
.bizName("x2i_stress_biz_test")
.recallParams(Lists.newArrayList(x2iRecallParam))
.returnCount(10)
.filterClause(new FilterClause(new SingleFilter("field1", FilterOperator.EQ, "'100'")))
.build();
BeResponse<BeResult> x2iResponse = client.query(x2iRequest);
System.out.println("X2I resp:\n" + new Gson().toJson(x2iResponse));
// 向量召回
RecallParam vectorRecallParam = RecallParam.builder().recallType(RecallType.VECTOR)
.triggerItems(Lists.newArrayList(
"0.579158749845,0.470209030437,0.749097467349,0.445656739882,0.844264905484,0.712275306635,0.844056298441,0.276650665052,0.949767836991,0.649219221171,0.66098161068,0.0691913368449,0.354189112041,0.447059806687,0.0549635567026,0.460209072549,0.65463754064,0.274392229466,0.0938289210632,0.424779378871,0.724381527526,0.207687200109,0.0439432787604,0.559263209734,0.0595299411194,0.949378904378,0.184843100327,0.208226326752,0.702787280776,0.211002033769,0.305579165662,0.0689032954442",
"0.608493077698,0.364550556482,0.22805051152,0.0762799657836,0.625648915719,0.57495010351,0.513739996805,0.851899131358,0.890538053817,0.915521223743,0.896193552683,0.809539003532,0.624342285425,0.777748612316,0.835579622526,0.988614572482,0.817653978433,0.807812712295,0.789510115629,0.96497810191,0.044510097916,0.810315469502,0.902480341306,0.698768508509,0.962197754709,0.74970913387,0.274244754285,0.756700157766,0.911915116709,0.407594729035,0.0998223357224,0.744411396701"
))
.build();
BeReadRequest vectorRequest = BeReadRequest.builder()
.bizName("vector_stress_biz_test")
.recallParams(Lists.newArrayList(vectorRecallParam))
.returnCount(10)
.build();
BeResponse<BeResult> vectorResponse = client.query(vectorRequest);
System.out.println("Vector resp:\n" + new Gson().toJson(vectorResponse));
// 多路召回
x2iRecallParam.setRecallName("vector_recall");
x2iRecallParam.setReturnCount(5);
vectorRecallParam.setRecallName("xi2_recall");
vectorRecallParam.setReturnCount(5);
BeReadRequest multiRequest = BeReadRequest.builder()
.bizName("multi_stress_biz_test")
.recallParams(Lists.newArrayList(x2iRecallParam, vectorRecallParam))
.returnCount(10)
.build();
BeResponse<BeResult> multiResponse = client.query(multiRequest);
System.out.println("Multi resp:\n" + new Gson().toJson(multiResponse));
String tableName = "be_example_expose";
// 写add消息
HashMap<String, String> addContents = Maps.newHashMap();
addContents.put("user_id", "u0003");
addContents.put("item_id", "10001");
addContents.put("time", "1640242662");
BeWriteRequest addRequest = BeWriteRequest.builder()
.primaryKey("user_id")
.type(BeWriteType.ADD)
.tableName(tableName)
.contents(addContents)
.build();
BeResponse writeResponse = client.write(addRequest);
System.out.println("Add resp:\n" + new Gson().toJson(writeResponse));
// 写delete消息
HashMap<String, String> deleteContents = Maps.newHashMap();
deleteContents.put("user_id", "u0003");
deleteContents.put("item_id", "10001");
BeWriteRequest deleteRequest = BeWriteRequest.builder()
.primaryKey("user_id")
.type(BeWriteType.DELETE)
.tableName(tableName)
.contents(deleteContents)
.build();
writeResponse = client.write(deleteRequest);
System.out.println("Delete resp:\n" + new Gson().toJson(writeResponse));
}
}
返回结果
返回结果示例如下:
X2I resp:
{"success":true,"result":{"errorCode":0,"errorMessage":"none","matchItems":{"fieldNames":["__score__","content","field1","field2","weight","item_id","match_type"],"fieldValues":[["0.988155007362366","949553_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","952","954","949553","0"],["0.935471892356873","161613_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","968","499","161613","0"],["0.915997266769409","517663_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","835","676","517663","0"],["0.873209953308105","248070_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","986","262","248070","0"],["0.86224102973938","779967_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","32","418","779967","0"],["0.680734694004059","327807_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","886","74","327807","0"],["0.666359663009644","542137_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","786","831","542137","0"],["0.496475785970688","759533_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","957","886","759533","0"],["0.36130827665329","873588_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","285","96","873588","0"],["0.301691889762878","112848_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","100","131","833","112848","0"]]}}}
Vector resp:
{"success":true,"result":{"errorCode":0,"errorMessage":"none","matchItems":{"fieldNames":["match_type","__score__","content","field1","field2","weight","item_id"],"fieldValues":[["0","15.965773582458496","136453_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","159","368","261","136453"],["0","15.827646255493164","207968_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","29","652","484","207968"],["0","15.694404602050782","542054_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","446","618","968","542054"],["0","15.608759880065918","250028_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","275","58","159","250028"],["0","15.49856948852539","681135_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","18","541","417","681135"],["0","15.47065258026123","831861_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","81","243","552","831861"],["0","15.469311714172364","636470_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","251","245","534","636470"],["0","15.46304702758789","367727_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","170","52","999","367727"],["0","15.376935005187989","647959_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","314","877","375","647959"],["0","15.37316608428955","702045_0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","460","580","397","702045"]]}}}
Multi resp:
{"success":true,"result":{"errorCode":0,"errorMessage":"none","matchItems":{"fieldNames":["__score__","content","field1","field2","item_id","match_type","weight"],"fieldValues":[]}}}
Add resp:
{"success":true}
Delete resp:
{"success":true}
文档内容是否对您有帮助?