release 0.2

This commit is contained in:
Hongwei Zhang 2021-12-02 15:50:44 +08:00
parent 9dfea4bc53
commit b726ccae49
3 changed files with 294 additions and 3 deletions

293
README.md
View File

@ -1,9 +1,15 @@
# 项目说明
# 数联网搜索引擎
## 项目说明
初次clone可使用以下命令。
```bash
git clone https://xxxx/XXX-bundle.git
```
在git clone之后执行
```bash
git submodule update --init
@ -14,8 +20,293 @@ git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gi
```
更新所有子项目:
```
git submodule foreach git pull --rebase origin master
git pull --rebase origin master
```
## 0.整体说明
![image-20211202143940500](./datanet-search-engine.png)
数联网标准软件中包括路由器,网关,搜索引擎三个部分组成
如图所示搜索引擎的代码由三部分组成分别是JavaYJS和front。Java部分用于使用Lucene对DO的元数据进行索引以便于搜索。
在yjs当中使用Java当中的SearchEngine类进行索引使用rocksDB存储元数据并向前端提供调用的接口
在front当中通过executeContractcontractName,operation,arg接口调用合约方法获取数据
### 0.1searchEngine与Router的联系
searchEngine会在前端配置router的地址调用router的getLRS接口获取SearchEngine自己的信息
### 0.2searchEngine与GateWayRepo的联系
在searchEngine看来gateway也是一个reporepo需要提供getCountgetMetaByOffset发布事件这三个接口
当在searchEngine当中添加一个Repo的时候searchEngine调用对应的Repo的getCount获取Repo当中的DO数量然后调用getMetaByOffset获取Repo当中的当前所有DO的元数据然后订阅该Repo的事件等到有新的更新再次通过getMetaByOffset获取
## 1.项目配置
### 1.1项目路径:
- datanet-search-engine-bundle
- datanet-search-engine-backend
- build //构建完成后生成
- ...
- output //部署的全部内容ypk里面的全部内容
- assets //静态资源文件(编译好的前端)
- libs //项目中java部分的依赖
- DAC.yjs //用户访问控制部分目前只使用了owner
- manifest.json
- mockConfig.json //模拟数据使用
- SearchEngine.jar
- SearchEngine.yjs //智能合约主体部分
- ...
- buildlibs
- cplib
- src
- main
- test
- yjs
- DAC.yjs //用户访问控制部分目前只使用了owner
- manifest.json
- mockConfig.json //模拟数据使用
- SearchEngine.yjs //智能合约主体部分
- ...
- datanet-search-engine-front
- dist //编译好的前端代码
- sdk-javascript //合约引擎的sdk改成将sdk作为子项目引入比较好
- src //前端代码部分
- ...
### 1.2配置
```
//当前路径datanet-search-engine-bundle
cd datanet-search-engine-front
//编译sdk
cd sdk-javascript
npm i
npm run build
cd ..
//编译前端项目
npm i
npm run build
//得到dist
执行backend当中的buildYPK在*backend/build当中得到SearchEngine.ypk
将YPK部署到合约引擎上并且运行
然后使用链接http://ip:port/DOIP/SearchEngine/assets/即可访问
例如http://023.node.internetapi.cn:21130/SearchEngine/assets/
```
## 2.YJS接口(最小集)
### 搜索引擎的合约当中至少对外暴露以下三个接口addReposearchDoiterRepo其他接口非必须对外暴露
### 2.1addRepo
向搜索引擎中添加一个Repo具体执行过程为
1. 在合约引擎的db当中保存repo元信息更新repo数量
2. 调用repo的getCount接口获取repo当中的全部DO数量
3. 调取repo的getMetaByOffset接口count为getCount返回值offset为0得到这些DO的全部信息
4. 搜索引擎索引这些DO的元信息,并记录在数据库当中更新DO数量和更新次数
5. 订阅Repo的更新事件一旦Repo有更新就获取更新的DO内容
参数一个JSON对象,至少包括repoid和repoName其他可选
```json
{"repoid":"86.139.36/repo1","repoName":"repo1"}
```
返回结果:
```json
"done"
```
### 2.2searchDo
参数一个JSON对象,至少包括type要搜索的字段和keyword搜索关键字
count和offset是可选项如果没有的话取默认值
```json
{"type":"doid","keyword":"86.139.28/abc"}
{"type":"doid","keyword":"86.139.28/abc","count":10,"offset":"0"}
```
### 2.3 iterRepo
遍历所有repo返回一个repo数组
参数:无
返回:
```json
[{"repoid":"xxx","repoName":"xxx"},{"repoid":"xxx","repoName":"xxx"}]
```
### 2.4addDo
添加并按照所有字段索引一个DO的元信息
参数一个JSON对象,至少包括doid其他可选
```json
{"doid":"86.139.36/repo1/1"}
```
###
### 2.5deleteDo
添加并按照所有字段索引一个DO的元信息
参数一个字符串内容是doid
```json
"86.139.36/repo1/1"
```
### 2.6 iterDo
遍历所有do返回一个do数组
参数:无
返回:
```json
[{"doid":"xxx","name":"xxx"},{"doid":"xxx","name":"xxx"}]
```
### 2.7 getRepoCount
返回Repo数量
参数:无
返回结果:
```json
5
```
### 2.8getDoCount
返回DO数量
参数:无
返回结果:
```json
5
```
### 2.9getUpdateCount
返回更新次数
参数:无
返回结果:
```json
5
```
### 2.10getSearchCount
返回搜索次数
参数:无
返回结果:
```json
5
```
### 2.11getUserCount
返回用户数量
参数:无
返回结果:
```json
5
```
### 2.12updateRepoHandler
更新事件的回调当订阅的Repo有更新是会调用执行的内容是
收到通知的count和offset然后去调用对应Repo的getMetaByOffset接口获取更新后的DO
### 2.13getinfo
前端获取自身信息
### 2.14setinfo
从Router获取到自身的数据后保存下来
## 3.Java接口
### 3.1createObj(String Dirname)
返回一个SearchEngine对象用于后续使用参数Dirname用于创建索引文件夹
### 3.2update(ScriptObjectMirror so)
更新或者添加一个DO的索引文档
### 3.3search(ScriptObjectMirror so)
根据关键字检索
### 3.4delete(ScriptObjectMirror so)
在索引中删除一个DO的文档
## 4.front
先进到sdk-javascript当中build
```
cd datanet-search-engine-front/sdk-javascript
npm i
npm run build
cd..//然后退回本级
npm i
npm run dev
npm build
npm run serve
```
###

@ -1 +1 @@
Subproject commit 256c94fc75779bdcc4d9c96e53973773125fb7fd
Subproject commit 27e53b19a25dfd6aa842c360c57a686f51bc64b3

@ -1 +1 @@
Subproject commit 8fa2515508d79718e8eff7a4fd39022a137bb4ea
Subproject commit c4649b6c2a6f518d3316a0359f0811602ff7ecc6