# datanet-search-engine-backend **Repository Path**: hxlim/datanet-search-engine-backend ## Basic Information - **Project Name**: datanet-search-engine-backend - **Description**: No description available - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-03-03 - **Last Updated**: 2023-03-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 注册表开发文档 ## 准备依赖环境 执行下面指令,将cp-bundle项目build后的产物软连接到backend路径下(两个路径都使用绝对路径) ```bash ln –s xxx/cp-bundle/cp/build/output/libs ./datanet-search-engine-bundle/datanet-search-engine-backend/cplib ``` 注意:执行完之后的格式应该如下所示 cplib有若干jar包,没有多余的文件夹,结构如下图所示 ![img_2.png](img_2.png) ## build 执行bulidYPK即可,会生成Registry-x.y.z.ypk ## 部署 如下图所示,在testBundle项目当中的test-tool下配置上传节点的配置文件,然后执行deploySearchEngine即可批量上传运行 参数格式与本地测试一样 ![img_1.png](img_1.png) ![img.png](img.png) ## YPK的相关文档 [ypk的开发文档](https://public.internetapi.cn/docs/bdcontract/doc/v1.7.5/5_YJSInDepth.html) [ypk的运行环境](https://public.internetapi.cn/docs/bdcontract/doc/v1.7.5/1_Introduction.html) [ypk的调试](https://gitee.com/BDWare/contract-java-example) ## 启动参数说明 在本地启动合约引擎,debugconf配置如上图所示,然后执行debugMain 配置debugconf.json具体参数如下所示 agentAddress:线上:023.node.internetapi.cn:21130,本地127.0.0.1:18000 killBeforeStart:若合约引擎当中已经运行该合约,上传时会先停掉旧合约 createParam:启动参数 参数当中的公私钥按需配置,prefix和reponame是当前repo的信息,routerURI是同级的路由器地址(一般不变),doMetaName是默认存储路径(一般不变) ```json { "agentAddress": "127.0.0.1:18000", "privateKey": "589d94ee5688358a1c5c18430dd9c75097ddddebf769f139da36a807911d20f8", "publicKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd", "ypkPath": "/Users/huaqiancai/BDWare/datanet-search-engine-bundle/datanet-search-engine-backend/build/Registry-1.2.6.ypk", "killBeforeStart": "Registry", "createParam": { "privateKey": "589d94ee5688358a1c5c18430dd9c75097ddddebf769f139da36a807911d20f8", "publicKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd", "prefix": "bdtest", "repoName": "Repository", "routerURI": "tcp://127.0.0.1:18041", "doMetaName": "Registry" } } ``` ## 常见问题 ### 本地java环境乱码 将所有的存在编码的地方都换成utf-8,包括环境变量等配置 ### 有些包找不到 1.检查cplib下面是否存在,注意所有的jar包直接在cplib下,中间没有其他文件夹 2.检查bulid.gradle当中的implement ## 开发说明 backend下面的关键部分如下所示 ### 1.cplib 依赖于ContractProcess的jar包 ### 2.yjs 合约部分,包括一下内容 - DAC.yjs 用于实现访问控制 - manifest.json - mockConfig.json 用于模拟数据的配置 - Registry.yjs 注册表对外提供的接口实现(其中会调用java的实现) ### 3.src 用于实现搜索功能 SearchEngie接口 0.获取SearchEngine对象 ```java se=SearchEngine.createObj() ``` 1.添加元数据索引: ```java se.update(ScriptObjectMirror so) ``` 2.搜索 ```java // 单个关键字 // 参数: {type":"doid","ketword":"DBRepo","count":10,"offset":0} se.search(ScriptObjectMirror so) // 多个关键字 // 参数: {"params":[{"type":"doid","ketword":"DBRepo"},{"type":"name","ketword":"xxx"}],"count":10,"offset":0} se.searchByMultiTag(ScriptObjectMirror so)