# 数据集发现门户 **Repository Path**: free4inno-team/dataset-set ## Basic Information - **Project Name**: 数据集发现门户 - **Description**: 利用知了openapi实现的数据集发现门户 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2022-02-12 - **Last Updated**: 2024-12-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 知了 Open API 构建单页应用 Demo ## 项目概述 ​ “知了”项目构建了Open API,用户可以通过调用知了 Open API 的开放能力快速构建不同场景下的知识管理类应用。dataset数据集发现门户即为通过调用知了Open API 快速构建单页应用的demo。 ​ 通常构建一个查询应用需要构建数据库用来存储数据,并通过一系列代码来实现数据库连接,查询,返回查询结果等一系列的指令,构建起来十分复杂。但基于知了的 Open API , 我们便可以调用知了的数据存储和查询功能,避免了后端系统搭建,数据库设计,搜索引擎部署等复杂内容。仅通过一个简单的http请求,即可调用知了的数据查询结果,十分方便快捷。 ​ 数据集单页应用demo将单页应用的相关配置资源提取到配置文件,这样一来即可通过仅修改配置文件实现各类单页应用的快速构建。 ## OpenAPI 构建介绍 1. 搜索数据集资源 单页应用 demo 根据请求参数拼接url,通过utils层http工具调用openapi,将结果返回到前端。 ``` java public String searchDataSets(String queryStr, Integer pageNum, Integer pageSize, JSONArray labelNames) { log.info("searchDataSets ---- start ----"); labelNames.add("数据集"); String url = zhiAddress + "search?" + "appkey=" + zhiAppkey + "&" + "pageNum=" + pageNum + "&" + "pageSize=" + pageSize + "&" + "queryStr=" + queryStr + "&" + "groupNames=" + "[]" + "&" + "labelNames=" + JSON.toJSONString(labelNames); log.info("searchDataSets -- " + url); try { String jsonResponse = httpUtils.getRequest(url); log.info("searchDataSets ---- end ----"); return jsonResponse; } catch (Exception e) { e.printStackTrace(); log.error("searchDataSets ---- error ----"); return ""; } } ``` 通过调用知了的openapi,以json字符串的方式,直接返回 openapi 搜索的结果。 ``` json { "code": 200, "msg": "业务处理成功", "data": { "groupNames": [], "totalResources": 58, "labelNames": ["NLP", "数据集"], "resource": [{ "id": 17671, "crop_id": null, "user_id": 143, "create_time": "2022-01-19T10:43:05.000+0800", "resourceId": null, "edit_time": "2022-03-06T11:08:10.000+0800", "title": "darpa", "text": " 序号4标题darpa描述(主要说明数据集的(可能)用途、应用领域等;针对标注数据需要说明标注的类别标签)课题二、三、四的原始基础数据。由文本分类模型分为7类:安全、经济、军事、科技、外交、政治、其他... ...", "attach_text": null, "attachment": null, "superior": 0, "recognition": null, "opposition": null, "pageview": null, "collection": null, "group_id": "89", "label_id": "206,184", "user_name": "刘鸿洁", "group_name": "自邮之翼", "label_name": "数据集,NLP", "permissionid": "0"}], "totalPages": 6, "pageSize": 10, "pageNum": 1, "queryStr": "" } } ``` 2. 获取数据集资源详情 数据集资源详情的数据查询逻辑与数据搜索逻辑相同,都是通过utils层http工具调用openapi,并且根据请求参数返回的结果拼接返回的url,并将结果返回到前端。 ``` java @GetMapping("/resource") public String resource(@RequestParam(required = true, value = "id") Integer id, Map param) { log.info("resource ==== start ==== id:" + id); String responseStr = resourceService.getResourceDetail(id); JSONObject jsonObject = JSONObject.parseObject(responseStr); param.put("res", jsonObject); log.info("resource ==== end ===="); return "resource/resource"; } ``` ## 前端页面介绍 单页应用demo 支持响应式布局,整体页面布局如下: ![image-20220408220601112](C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220408220601112.png) ![image-20220408220618107](C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220408220618107.png) 前端页面各个标签都支持双字段,包括显示字段和实际查询字段,在配置文件中可以直接更改。 高级搜索部分支持选中多按钮同时搜索,分类搜索和热门搜索则在单击后直接返回搜索结果。 ![image-20220408220641156](C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220408220641156.png) ![image-20220408220655045](C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20220408220655045.png) ## 配置文件修改 ​ 单页应用demo 将页面中默认搜索词,搜索门户标题和高级搜索,分类搜索,热门搜索的各个字段都提出到配置文件中,可以通过修改配置文件进而修改各个按钮的显示和查询的内容。(注:高级搜索,分类搜索,热门搜索设置了两个字段,分别为标签显示字段和实际搜索字段,都提取到配置文件中,可直接修改) ​ 各个字段通过@Valued的方式注入到controller层,以供调用。这样一来,dataset单页应用可以通过简单的修改配置文件快速生成新类型的单页应用。 ``` java # 知了openapi zhi.openapi.address=http://zhi.free4inno.com/openapi/ zhi.openapi.appkey=rff8m43c #默认搜索词 zhi.dataset.defaultSearchTerms=在这里发现您想要的数据集 #搜索门户标题 zhi.dataset.title=数据集发现门户 #高级搜索 zhi.dataset.advancedSearchText=高级搜索 #高级搜索key zhi.dataset.advancedSearchKey=异常检测,NLP,迁移学习,数据中心,工业,网络,微服务,云计算,数据集 #高级搜索value zhi.dataset.advancedSearchValue=异常检测,NLP,迁移学习,数据中心,工业,网络,微服务,云计算,数据集 #分类搜索标题 zhi.dataset.classificationSearchText=分类搜索 #分类搜索显示内容 zhi.dataset.classificationSearchKey=自然语言处理,工业,异常检测,微服务 #分类搜索内容 zhi.dataset.classificationSearchValue=NLP,工业,异常检测,微服务 #热门搜索标题 zhi.dataset.hotSearchText=热门搜索 #热门搜索显示内容 zhi.dataset.hotSearchKey=自然语言处理,NLP,自适应,数据融合,Data Fusion,微服务,Microservice #热门搜索key内容 zhi.dataset.hotSearchValue=NLP,NLP,自适应,数据融合,数据融合,微服务,微服务 ```