抗疫查詢工具《疫情搜》實現的技術內幕

抗疫期間,為幫助廣大民眾解除是否與病毒患者近距離接觸過的困惑,微雲數聚(北京)科技有限公司利用圖數據庫技術和官方報導的數據,及時研發並推出了《疫情搜》工具,方便大家快速查到涉疫的交通工具和地點。該工具在 頭條的報導 後被推薦了數千次。應眾多圖粉的要求,本文將公開該工具實現的技術細節,包括數據來源、採集抽取、圖數據建模以及

完整的導入語句 ,供圖數據庫、知識工程等相關技術人員參考。 全是乾貨!

一、需求分析

中國正面臨著一場前所未見的疫情。各種交通工具已成為病毒傳播的一種主要途徑。春節期間回家探親、返城復工又不得不乘坐飛機、火車、長途客車、公共汽車、地鐵、輪船、出租車等交通工具,難免有與病毒患者同行的機會。關於確診病人乘坐過的飛機、火車等情況,各級政府和新聞機構有許多報導。如何從大量的報導中查出自己乘坐過的交通工具是否有確診病例乘坐過?這就亟需一個便利的查詢工具。

近期有 很多技術志願者紛紛推出了各種“同行查詢”工具,但尚未見到既能快速查詢、又能直觀展現傳播途徑的工具。《疫情搜》就是為滿足這個實際需求研發而成的。

、功能設計

想知道你是否曾經與病毒患者同坐過飛機、火車、地鐵或同到過某個地點嗎?只需點擊 http://v.we-yun.com:2020 輸入地名(如“北京”,“北京,武漢”、“北京,武漢,上海”等)、航班、車次或車牌等即可迅速查到。

友情提示: 首次進入較慢,請耐心等待一下。

查詢舉例:

1、輸入“ 北京“,查詢與北京相關的涉疫情航班、車次、車牌

抗疫查詢工具《疫情搜》實現的技術內幕

2、輸入“ 北京,武漢“,查詢與北京與武漢相關的涉疫情航班、車次、車牌

抗疫查詢工具《疫情搜》實現的技術內幕

3、輸入“ 北京,武漢,上海 “,查詢與北京、武漢和上海相關的涉疫情航班、車次、車牌

抗疫查詢工具《疫情搜》實現的技術內幕

三、架構設計

數據庫:圖數據庫 Neo4j Enterprise 3.5.14,單實例

插件:apoc-3.5.0.6-all.jar

應用層:關係搜 3.5.14

四、數據源

網站: https://2019ncov.nosugartech.com

數據: https://2019ncov.nosugartech.com/data.json

五、建模

設立飛機、火車、長途、公交、輪船、出租、場所和地點共8種(對象)節點,前7種(對象)節點與地點有出發和到達(關係)連線。

抗疫查詢工具《疫情搜》實現的技術內幕

六、完整的導入語句(乾貨來了)

<code>// 刪除全文索引call db.indexes() yield type, indexName where type='node_fulltext' and indexName='名稱'call db.index.fulltext.drop(indexName) return *;// 創建全文索引call db.index.fulltext.createNodeIndex("名稱",["地點","飛機","火車", "地鐵", "長途", "公交", "出租", "輪船", "場所"],["名稱"]);CREATE CONSTRAINT ON (p:地點) ASSERT p.名稱 IS UNIQUE;// 清除數據match (n:地點) detach delete n;// 導入傳播數據WITH "https://2019ncov.nosugartech.com/data.json" AS url CALL apoc.load.json(url) YIELD valueUNWIND value.data AS item //創建事件節點with item,      ['飛機', '火車', '地鐵', '長途', '公交', '出租', '輪船', '場所'][item.t_type-1] as type,     ['航班', '車次', '線號', '車牌', '車牌', '車牌', '船次', '名稱'][item.t_type-1] as no_name call apoc.merge.node([type], {id:item.id},     {        名稱:item.t_no + case when item.t_no_sub='' then '' else ' ' + item.t_no_sub end,        類型:type,        日期:item.t_date,         開始時間:item.t_start,        結束時間:item.t_end,        出行類型:type,        出行描述:item.t_memo,        車廂:item.t_no_sub,        出發站:item.t_pos_start,        到達站:item.t_pos_end,        線索來源:item.source,        線索人:item.who,        更新時間:item.updated_at,        image:'http://we-yun.com/image/交通工具/'+type+'.png'    },    {}) yield node //創建開始節點with item, node where item.t_pos_start<>''merge (p1:地點 {名稱:item.t_pos_start}) //創建結束節點with item, node, p1 where item.t_pos_end<>'' and  item.t_pos_start<>item.t_pos_end merge (p2:地點 {名稱:item.t_pos_end}) // 創建出發和到達關係merge (p1)-[r1:出發]->(node)-[r2:到達]->(p2)return count(r2);// 設置節點顯示屬性with [        { color: '#FFE081', `border-color`: '#9AA1AC', `text-color-internal`: '#FFFFFF'},        { color: '#C990C0', `border-color`: '#b261a5', `text-color-internal`: '#FFFFFF'},        { color: '#F79767', `border-color`: '#f36924', `text-color-internal`: '#FFFFFF'},        { color: '#57C7E3', `border-color`: '#23b3d7', `text-color-internal`: '#FFFFFF'},        { color: '#F16667', `border-color`: '#eb2728', `text-color-internal`: '#FFFFFF'},        { color: '#D9C8AE', `border-color`: '#c0a378', `text-color-internal`: '#604A0E'},        { color: '#8DCC93', `border-color`: '#5db665', `text-color-internal`: '#604A0E'},        { color: '#ECB5C9', `border-color`: '#da7298', `text-color-internal`: '#604A0E'},        { color: '#4C8EDA', `border-color`: '#2870c2', `text-color-internal`: '#FFFFFF'},        { color: '#FFC454', `border-color`: '#d7a013', `text-color-internal`: '#604A0E'},        { color: '#DA7194', `border-color`: '#cc3c6c', `text-color-internal`: '#FFFFFF'},        { color: '#569480', `border-color`: '#447666', `text-color-internal`: '#FFFFFF'}    ]    as nodeSettings MATCH (n:地點)with nodeSettings, n, apoc.node.degree(n, '') as cnt_out with nodeSettings, n, cnt_in, cnt_out,       case when cnt_out=0 then 11 when cnt_out<5 then 3 else 10 end as index set n.diameter=80+cnt_out*100/500, n+=nodeSettings[index],     n.傳出次數=cnt_out,     n.傳入次數=cnt_in,     n.caption=n.名稱+'('+cnt_in+","+cnt_out+')'; /<code>

七、特別鳴謝:

感謝 《新型冠狀病毒肺炎確診患者同行程查詢工具》https://2019ncov.nosugartech.com 的作者整理和無私分享數據!

感謝龐國明先生推薦 數據源,以及他研究病毒傳播模型帶給我研發《疫情搜》的靈動!


分享到:


相關文章: