最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
多模塊進(jìn)行時:同時使用RedisGraph和RediS

來源:redislabs

成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、郁南網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為郁南等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

作者:Kyle Davis

翻譯:Kevin (公眾號:中間件小哥)

在 2019 年的 RedisConf 會議上,我演示了一個在 RedisGraph 節(jié)點(diǎn)上進(jìn)行全文 RediSearch?的解決方案。當(dāng)時講的有點(diǎn)模糊,但現(xiàn)在,我意識到我們應(yīng)該解釋一下我們是如何做到這一點(diǎn)并發(fā)布源代碼。

多模塊進(jìn)行時:同時使用 RedisGraph 和 RediS

在這個演示中我展示了一個小界面,它支持搜索動物并通過生物分類系統(tǒng)(界、門、類、目等)查看它們之間的關(guān)系。全文部分基于維基百科的第一段英文。例如,搜索“寵物貓”和“Blue Whale”,會發(fā)現(xiàn)他們都是哺乳動物,而如果搜索“寵物貓”和“雪豹”,則會發(fā)現(xiàn)他們都屬于同一個科:貓科。

這個演示項(xiàng)目出乎意料地簡單,但我應(yīng)該指出 RediSearch 和 RedisGraph 之間的集成仍處于早期階段,在編寫本文時還沒有準(zhǔn)備好應(yīng)用于生產(chǎn)環(huán)境。所以,我建議您在了解 RediSearch 和 RedisGraph 的集成將在未來幾個月逐漸成熟的前提下,確定此方法是否能夠滿足您的需求。

讓我們再討論一下如何從源碼構(gòu)建。要完成的第一件事是基于代碼庫中正確的分支構(gòu)建 RediSearch 和 RedisGraph。RediSearch 使用的是當(dāng)前的主分支,而 RedisGraph 是 redisconf 分支。如果您想根據(jù)自己的需要構(gòu)建解決方案,可以從源代碼構(gòu)建這兩個模塊。RedisGraph 和 RediSearch 的網(wǎng)站上都有關(guān)于如何構(gòu)建的詳細(xì)說明,這并不困難,只是需要一點(diǎn)時間。

配置模塊的位置在 redis.conf 文件中,為了確保在 RediSearch 之前加載 RedisGraph,需要在 redis.conf 文件的模塊部分將 RediSearch 的 loadmodule 配置項(xiàng)放在 RedisGraph 的 loadmodule 配置項(xiàng)之前。在完成編輯 redis.conf 之后,需要重啟Redis 服務(wù)器讓配置生效。

在之前演示的 demo 中,我使用 RedisGraph-bulk-loader 腳本將以下內(nèi)容從 CSV 加載到 RedisGraph,從而包括了我們收集的數(shù)據(jù)集。這個數(shù)據(jù)集只包括哺乳動物,因?yàn)槠渌麆游锏臄?shù)據(jù)質(zhì)量較低(非哺乳動物物種很少有好的維基百科描述)。

下面是加載數(shù)據(jù)的例子:


$ cd redisgraph-bulk-loader/ $ python3 bulk_insert.py MAMMALS -q -n /path/to/demo/dataload/Class.csv -n /path/to/demo/dataload/Family.csv -n /path/to/demo/dataload/Genus.csv -n /path/to/demo/dataload/Order.csv -n /path/to/demo/dataload/Species.csv -r /path/to/demo/dataload/IN_CLASS.csv -r /path/to/demo/dataload/IN_FAMILY.csv -r /path/to/demo/dataload/IN_GENUS.csv -r /path/to/demo/dataload/IN_ORDER.csv -a yourpassword 1 nodes created with label 'Class' 157 nodes created with label 'Family' 1272 nodes created with label 'Genus' 29 nodes created with label 'Order' 5616 nodes created with label 'Species' 29 relations created for type 'IN_CLASS' 1272 relations created for type 'IN_FAMILY' 5616 relations created for type 'IN_GENUS' 157 relations created for type 'IN_ORDER' Construction of graph 'MAMMALS' complete: 7075 nodes created, 7074 relations created in 0.443749 seconds $ redis-cli -a yourpassword GRAPH.QUERY MAMMALS "CALL db.idx.fulltext.createNodeIndex('Species','description')" Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 1) (empty list or set) 2) (empty list or set) 3) 1) "Query internal execution time: 324.970000 milliseconds"

(gist:https://gist.github.com/stockholmux/0727a4a784a46f8cb9e8329d393a513a)

在這里,key MAMMALS 包含了我們的整個圖表。一些重要的注意事項(xiàng):

?bulk_insert.py 上的-q開關(guān)非常重要,因?yàn)樗试S在讀取 CSV 時進(jìn)行智能引用。

?調(diào)用一次 redis-cli 對所有節(jié)點(diǎn)進(jìn)行批量索引,從而為全文搜索攝取了7000 多個文檔。

現(xiàn)在讓我們啟動并運(yùn)行一個 UI。和幾乎所有 Node.js 應(yīng)用程序一樣,我們先安裝 npm。安裝大概需要幾秒鐘,因?yàn)槲覀儾粌H要管理Node 的服務(wù)器端文件。還有前端的 Vue.js 組件。如果你最近沒有花很多時間在前端JavaScript 上,那你大概不能使用一個 FTP 和 HTML 文件來實(shí)現(xiàn)這些功能。所幸現(xiàn)代前端確實(shí)重視工具,所以我們可以安裝 VueCLI(我建議遵循 Vue CLI 入門指南)。

在你的前端工具準(zhǔn)備好過后,讓我們繼續(xù)來講 npm 安裝和啟動運(yùn)行前端上:

$ npm run build

這將創(chuàng)建我們所有前端文件的 dist 目錄?,F(xiàn)在我們有數(shù)據(jù)在 Redis 里,我們的前端文件也準(zhǔn)備好啟動服務(wù),所以我們可以連接 Redis 服務(wù)器:

$ node server.js -p 6379 -a yourpassword -hyourhostOrlocalhost

讓我們先討論一下關(guān)于我們剛剛打開的這個服務(wù)器的一些問題。它構(gòu)建在 Express.js上,主要使用 WebSocket 進(jìn)行通信。我還集成了可視化引擎調(diào)試工具,它允許您在單獨(dú)的瀏覽器窗口中查看正在執(zhí)行的命令。你可以把瀏覽器指向地址:http://localhost:4444。

總之,相對于它所實(shí)現(xiàn)的功能來說,它非常的簡短——只有 75 行代碼。我們的解決方案不需要那么長,因?yàn)槲覀儗?shí)際上所做的就是接受WebSocket 連接,根據(jù)傳遞的消息運(yùn)行 Redis 命令,然后將這些消息與結(jié)果一起傳遞回來。Redis(Graph)做了所有復(fù)雜的工作。讓我們看看正在執(zhí)行的命令。

為了搜索關(guān)鍵字,我們運(yùn)行這個命令:

> GRAPH.QUERY MAMMALS"CALL db.idx.fulltext.queryNodes('Species','cat house pet')"

這很簡單。我們的鍵是哺乳動物,我們使用一個特殊的語法調(diào)用了一個特定的函數(shù),它的第一個參數(shù)是我們要查找的節(jié)點(diǎn)的標(biāo)簽,另一個參數(shù)是實(shí)際要搜索的字符串。您可以傳遞有效的RediSearch 參數(shù)進(jìn)行查詢,但請記住,目前這只是全文本搜索,因此不要使用地理空間、標(biāo)記或數(shù)字子句。

一旦我們確定了我們要比較的兩種動物,我們就可以使用一個簡單的命令進(jìn)行查詢:

> GRAPH.QUERY MAMMALS"MATCH (s:Species)-[*]->(x)<-[*]-(c:Species) WHERE c.fullname ='Felis catus' AND s.fullname = 'Balaenoptera borealis' RETURN x.name,labels(x) LIMIT 1"

在 server.js 文件中,這些查詢被表示為JavaScript 模板字符串,沒有對用戶隱藏,用戶輸入的字符串被直接插入到輸入中進(jìn)行查詢。但如果在生產(chǎn)環(huán)境中部署類似這樣的東西,就需要小心接收和校驗(yàn)用戶輸入。

如果打算修改前端代碼,請確保編輯的是/src 目錄,而不是/dist。編輯之后,您需要再次運(yùn)行 npmrun build 或使用開發(fā)服務(wù)器(npmrun serve),該服務(wù)器自動編譯對前端代碼的更改,并將其提供給另一個端口。這是一個非常標(biāo)準(zhǔn)的Vue.js 和 Bootstrap 應(yīng)用。唯一真正相關(guān)的文件是:/src/App.js, /src/components/panels.vue?and?/src/components/search.vue.

以上就是一個簡單的功能強(qiáng)大的 demo,集成了兩個不同的 Redismodule:RediSearch 和 RedisGraph。我鼓勵你使用你自己數(shù)據(jù)集來體驗(yàn)這個 demo。

原文鏈接:https://https://redislabs.com/blog/multi-model-action-using-redisgraph-redisearch-together/

多優(yōu)質(zhì)中間件技術(shù)資訊/原創(chuàng)/翻譯文章/資料/干貨,請關(guān)注“中間件小哥”公眾號!


當(dāng)前標(biāo)題:多模塊進(jìn)行時:同時使用RedisGraph和RediS
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/giseoc.html