release 0.2
This commit is contained in:
parent
9dfea4bc53
commit
b726ccae49
293
README.md
293
README.md
@ -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)
|
||||
|
||||
数联网标准软件中包括路由器,网关,搜索引擎三个部分组成
|
||||
|
||||
如图所示,搜索引擎的代码由三部分组成,分别是Java,YJS和front。Java部分用于使用Lucene对DO的元数据进行索引以便于搜索。
|
||||
|
||||
在yjs当中使用Java当中的SearchEngine类进行索引,使用rocksDB存储元数据,并向前端提供调用的接口
|
||||
|
||||
在front当中,通过executeContract(contractName,operation,arg)接口调用合约方法获取数据
|
||||
|
||||
### 0.1searchEngine与Router的联系
|
||||
|
||||
searchEngine会在前端配置router的地址,调用router的getLRS接口获取SearchEngine自己的信息
|
||||
|
||||
### 0.2searchEngine与GateWay(Repo)的联系
|
||||
|
||||
在searchEngine看来,gateway也是一个repo,repo需要提供:getCount,getMetaByOffset,发布事件这三个接口
|
||||
|
||||
当在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接口(最小集)
|
||||
|
||||
### 搜索引擎的合约当中至少对外暴露以下三个接口:addRepo,searchDo,iterRepo,其他接口非必须对外暴露
|
||||
|
||||
### 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
|
Loading…
Reference in New Issue
Block a user