本节为您介绍如何使用Connection
对象的方法管理实例上的嬴图算法和自定义算法(EXTA)。
每个示例主要展示如何使用所列方法。点击完整示例查看完整代码示例。
嬴图算法
ShowAlgo()
获取安装在实例上的嬴图算法。
参数:
RequestConfig
(可选):配置请求。
返回值:
List<Algo>
:获取到的全部算法列表。
// 获取已安装的全部嬴图算法并打印首个返回的算法信息
var res = await ultipa.ShowAlgo();
Console.WriteLine(JsonConvert.SerializeObject(res[0].Params));
"{\"name\":\"louvain\",\"description\":\"louvain\",\"version\":\"1.0.4\",\"parameters\":{\"edge_schema_property\":\"optinal,default 1 for each edge if absent\",\"phase1_loop_num\":\"size_t,required\",\"min_modularity_increase\":\"float,required\",\"limit\":\"optional,-1 for all results, >=0 partial results\",\"order\":\"optional, asc or desc, case_unsensitive, only work for 'community:id/count' mode\"},\"write_to_db_parameters\":{\"property\":\"set write back property name for each schema and nodes\"},\"write_to_file_parameters\":{\"filename1\":\"id1:community\",\"filename2\":\"community1: id1,id2...\",\"filename3\":\"community1: count\"},\"write_to_stats_parameters\":{\"enable\":\"0:no stats, 1:enable stats(count of communities)\"},\"write_to_client_normal_parameters\":{\"mode\":\"1:<id1:community> 2:<community1:count>\"},\"write_to_client_stream_parameters\":{\"mode\":\"1:<id1:community> 2:<community1:count>\"},\"result_opt\":\"59\"}"
InstallAlgo()
在实例上安装一个嬴图算法。
参数:
string
:算法安装包文件路径(.so).string
:配置文件路径(.yml).RequestConfig
(可选):配置请求。
返回值:
InstallAlgoReply
:请求的结果。
// 安装算法LPA,使用主节点以确保一致性,并打印错误代码
RequestConfig requestConfig = new RequestConfig() { UseMaster = true };
var res = await ultipa.InstallAlgo(
"E:/Algo/libplugin_lpa.so",
"E:/Algo/lpa.yml",
requestConfig
);
Console.WriteLine(res.Status.ErrorCode);
Success
UninstallAlgo()
卸载实例中的嬴图算法。
参数:
string
:算法名称。RequestConfig
(可选):配置请求。
返回值:
UninstallAlgoReply
:请求的结果。
// 卸载算法LPA并打印错误代码
var res = ultipa.UninstallAlgo("lpa");
Console.WriteLine(res.Status.ErrorCode);
Success
EXTA
ShowExta()
获取安装在实例上的全部EXTA。
参数:
RequestConfig
(可选):配置请求。
返回值:
List<Exta>
:获取到的全部EXTA列表。
// 获取已安装的全部EXTA并打印首个返回的算法信息
var res = await ultipa.ShowExta();
Console.WriteLine(JsonConvert.SerializeObject(res[0]));
{"Author":"wuchuang","Name":"page_rank","Version":"beta.4.4.41-b4.4.0-tv-ui","Detail":"base:\r\n category: ExtaExample\r\n cn:\r\n name: page_rank\r\n desc: null\r\n en:\r\n name: page_rank\r\n desc: null\r\n\r\nother_param:\r\n\r\n \r\nparam_form:\r\n\r\nwrite:\r\n\r\nreturn:\r\n\r\nmedia:\r\n"}
InstallExta()
在实例上安装一个EXTA。
参数:
string
:EXTA安装包文件路径(.so).string
:配置文件路径(.yml)。RequestConfig
(可选):配置请求。
返回值:
InstallExtaReply
:请求的结果。
// 安装EXTA page_rank,使用主节点以确保一致性,并打印错误代码
RequestConfig requestConfig = new RequestConfig() { UseMaster = true };
var res = await ultipa.InstallExta(
"E:/Exta/libexta_page_rank.so",
"E:/Exta/page_rank.yml",
requestConfig
);
Console.WriteLine(res.Status.ErrorCode);
Success
UninstallExta()
卸载实例中的EXTA。
参数:
string
:EXTA名称。RequestConfig
(可选):配置请求。
返回值:
UninstallExtaReply
:请求的结果。
// 卸载EXTA page_rank并打印错误代码
var res = ultipa.UninstallExta("page_rank");
Console.WriteLine(res.Status.ErrorCode);
Success
完整示例
using System.Security.Cryptography.X509Certificates;
using System.Threading;
using System.Xml.Linq;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using UltipaService;
using UltipaSharp;
using UltipaSharp.api;
using UltipaSharp.configuration;
using UltipaSharp.connection;
using UltipaSharp.exceptions;
using UltipaSharp.structs;
using UltipaSharp.utils;
using Logger = UltipaSharp.utils.Logger;
using Property = UltipaSharp.structs.Property;
using Schema = UltipaSharp.structs.Schema;
class Program
{
static async Task Main(string[] args)
{
// 配置连接
//URI 示例: Hosts=new[]{"mqj4zouys.us-east-1.cloud.ultipa.com:60010"}
var myconfig = new UltipaConfig()
{
Hosts = new[] { "192.168.1.85:60061", "192.168.1.86:60061", "192.168.1.87:60061" },
Username = "***",
Password = "***",
};
// 建立与数据库的连接
var ultipa = new Ultipa(myconfig);
var isSuccess = ultipa.Test();
Console.WriteLine(isSuccess);
// 配置请求
RequestConfig requestConfig = new RequestConfig() { UseMaster = true };
// 安装算法LPA
var res = await ultipa.InstallAlgo(
"E:/Algo/libplugin_lpa.so",
"E:/Algo/lpa.yml",
requestConfig
);
Console.WriteLine(res.Status.ErrorCode);
}
}