readme

# 数据库展示接口说明 ## 待实现功能预览(设计组) 1. 搜索 可能对Category Target Name(最有可能) Smiles(第二有可能) Activity Type(单位)进行搜索 **可能输入的内容示例:** Category:cancer、virus、cell、kinase等等 Target Name:SARS-Cov-2,A549,MCF-7 Smiles:COc1cccc(-c2nc(O)c3cc(N4CCOCC4)ccc3n2)c1 Activity Type:u,uM,inhibition **默认展示的灰底搜索示例**:SARS-CoV-2,Cancer,COc1cc2[nH]c3c(C)nccc3c2cc1 **搜索后返回的结果**:只保留搜索到相关的行就可以 2. 超链接跳转键 Detail Link列的内容是可用的url,展示一个url会很丑,最好前端做成按键形式 3. 筛选分类显示 默认全部展示,如果用户点击筛选窗格中的某一类 就只显示某一类 窗格和预测结果页一样的样式就可以 和搜索的先后关系问题:①先搜索 再对结果点击分类显示器进行筛选(即 在搜索结果中筛选) ②先筛选 选择类后只展示类 后搜索(即 在筛选结果中搜索) 这两种,好实现就都实现,不好实现就只搞①,每次搜索会刷新筛选情况的意思 ## 介绍与开发说明 数据库展示功能接口使用了**elasticsearch**,目前所有的接口暂定都直接使用其自带的REST api。 测试环境下的链接为 <u>~~http://116.62.220.36:9200~~</u>, 目前接口没有开启安全验证,很不安全,仅供测试,后续正式环境会相应开启,但是功能api不会受到影响,即现在开发的代码后续不需要大量修改。 ## 几个重要的概念 - index:类似于table(本项目所用的index名称为link) - document: 类似于row,表示一个record --- ## API基本逻辑介绍 > 本项目只会涉及“增删改查”中的“查”的操作,故本文档只做最基本的“查”的介绍,若想了解更多有关[elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html)的内容,请移步官网查看 ### 基本查询 |模式|请求方式|索引(index)|url|路径参数(均可选)| |--|--|--|--|--| |简单获取示例|GET|link|/link/_search|`size`(匹配的条数),`from`(页码)`q`(query)(值:key:value)| |基本筛选|POST|link|/link/_search|`size`,`from`(同上,只不过url参数的优先级是高于下面json中的参数的| >请求json的一个简单示例 ```json { "query":{ "match":{ "Activity Type":"inhibition" } }, "from":10, "size":15 } ``` > 与之等价的get请求url ``` /link/_search?q=Activity%Type:inhibition&from=10&size=15 ``` ### 单条件,分页与高亮查询 ```json { "query":{ "match":{ // 全部匹配可以用 "match_all","match_phase":取消分词,完全匹配 还可以换成"term","prefix","wildcard"(通配符),"fuzzy":模糊查询 "<key>":"<value>" } }, "highlight":{ "fields":{ "*":{} } }, "from":<value>, // 当前页,从零开始计数,不要加双引号 "size":<value>, "sort":{ "<your_field>":{ "order": "desc/asc" // 降序或者升序 } } } ``` ### 多字段查询 ```json { "query":{ "multi_match":{ "query":"A549", "fields":["Smiles","Target Name","Category","Activity Type"] } } } ``` ### 多条件复合查询 ```json { "query":{ "bool":{ "should":[ //可以是"must","must_not" { "match":{ "Category":"A549" } },{ "match":{ "Target Name":"A549" } }, { "match":{ "Smiles":"A549" } } ] } } } ``` ### 成功时返回数据说明 ```json { "took": 12, //响应所花费时间(不重要) "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { //命中的doc数目 "total": { "value": 10000, //检索出共10000数目(大于这个数目后面也不检索了)(不重要) "relation": "gte" //关系:匹配条目大于或等于(greater than or equal) }, "max_score": 2.2901592, //hits中最匹配的document的匹配值 "hits": [ //命中的documents都在这里用列表存储着 { "_index": "link", //索引,本项目都是link "_id": "RlveX38BwaVD80k-pd2W", //随机生成的id,除非人为指定(不重要) "_score": 2.2901592, //匹配度 "_source": { //document,真正要展示的内容 "Category": "Anti-cancer Target", "Target Name": "5-LOX", "Smiles": "O=C(Cc1ccc(OCc2ccccc2)cc1)N(Cc1ccccc1)OCc1ccccc1", "Activity Type": "Inhibition = 22.0 %", "Detail Link": "https://www.ebi.ac.uk/chembl/compound_report_card/CHEMBL55127/" } }, { "_index": "link", "_id": "SFveX38BwaVD80k-pd2W", "_score": 2.2901592, "_source": { "Category": "Anti-cancer Target", "Target Name": "5-LOX", "Smiles": "COc1ccc(C(=O)/C=C/c2cc3ccccc3nc2Cl)c(OC)c1", "Activity Type": "Inhibition = 27.6 %", "Detail Link": "https://www.ebi.ac.uk/chembl/compound_report_card/CHEMBL16869/" } } ] } } ``` ## 实现功能的接口整合 基本展示 - Get 请求加上 size和from参数即可 分类加搜索 - POST 加上复合查询