国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

500W 數(shù)據(jù),每秒 20W 并發(fā)分詞檢索,架構(gòu)如何設(shè)計?

開發(fā) 架構(gòu)
今天繼續(xù)回答星球水友提問。這是一個典型的,短文本分詞搜索的問題,簡單聊聊自己的經(jīng)驗。

沈哥,我們有個業(yè)務(wù),類似于“標(biāo)題分詞檢索”,并發(fā)量非常大,大概20W次每秒,數(shù)據(jù)量不是很大,大概500W級別,而且數(shù)據(jù)不會頻繁更新,平均每天更新一次,請問有什么好的方案么?

今天繼續(xù)回答星球水友提問。

這是一個典型的,短文本分詞搜索的問題,簡單聊聊自己的經(jīng)驗。

常見的文本檢索方案有哪些?

(1) 數(shù)據(jù)庫LIKE法

將標(biāo)題數(shù)據(jù)存放在數(shù)據(jù)庫中,使用like來查詢,方案非常簡單,能支持簡單的模糊搜索,但不支持分詞。

畫外音:顯然不適用于本例。

(2) 數(shù)據(jù)庫全文檢索法

將標(biāo)題數(shù)據(jù)存放在數(shù)據(jù)庫中,建立全文索引來檢索,方案依然簡單,利用了數(shù)據(jù)庫的能力,不用額外開發(fā),但性能較低。

畫外音:本例的并發(fā)肯定扛不住。

(3) 開源方案索引外置法

搭建lucene,solr,ES等開源搜索工具,建立索引,支持分詞,支持?jǐn)?shù)據(jù)量和吞吐量的水平擴展。

該方案能夠很好的滿足本例的需求。但是,殺雞焉用牛刀,本例有一些業(yè)務(wù)特性:文本短,更新不頻繁,如果利用好這兩個特點,能有更巧妙的方案。

畫外音:任何脫離業(yè)務(wù)的架構(gòu)設(shè)計,都是耍流氓。

針對“更新不頻繁”的特性,可以使用“分詞+DAT”方案。

畫外音:分詞就不多說了。

什么是DAT?

DAT是double array trie的縮寫,是trie樹的一個變體優(yōu)化數(shù)據(jù)結(jié)構(gòu),它在保證trie樹檢索效率的前提下,能大大減少內(nèi)存的使用,經(jīng)常用來解決檢索,信息過濾等問題。

畫外音:更具體的,可以Google一下“DAT”,DAT的缺點是,需要提前建立索引,索引不能實時更新。

為什么用trie樹的變種DAT,是否可以直接使用trie樹呢?

trie樹的優(yōu)點是,索引可以實時更新;不足是,占用內(nèi)存非常大。

本例索引無需實時更新,無法利用trie樹的優(yōu)點。但是,如果300W短文本建立好trie樹內(nèi)存能裝下,則可以使用trie樹,否則只能使用DAT。

普及,什么是trie樹?

trie樹,又稱單詞查找樹,經(jīng)常用于搜索引擎詞頻統(tǒng)計,短文本檢索,輸入法輸入提示等。

畫外音:什么數(shù)據(jù)結(jié)構(gòu)適合什么業(yè)務(wù)場景,一定要爛熟于胸。

它的特點是,能利用字符串的公共前綴來減少查詢時間,最大限度地減少無謂的字符串比較,其查詢時間復(fù)雜度只與樹的高度有關(guān),與查詢數(shù)據(jù)量級無關(guān),因此查詢效率非常高。

畫外音:“時間復(fù)雜度與查詢數(shù)量級無關(guān)”這個太屌了。

例如:上面的trie樹就能夠表示{and, as, at, cn, com}這樣5個標(biāo)題的集合,可以用來做這5個字符串的詞頻統(tǒng)計,或者檢索。

畫外音:檢索時,節(jié)點存儲命中該item的doc_list<doc_id>。

分詞之后,是不是需要多次掃描trie樹? 

是的。

分詞之后,每個item都要掃描一次trie樹,得到的doc_list<doc_id>的交集,就是最終命中每個item的檢索結(jié)果。

針對“短文本”“500W數(shù)據(jù)”“不頻繁更新”這些特性,還能使用“分詞+內(nèi)存hash”方案。

這個方案需要先對索引進行初始化:對所有短文本進行分詞,以詞的hash為key,doc_id的集合為value。

查詢的過程也很簡單:對查詢字符串進行分詞,對每個分詞進行hash,直接查詢hash表格得到doc_list<doc_id>,再對每個分詞的檢索結(jié)果進行交集。

舉個栗子進行說明。

例如:

  • doc1 : 我愛北京
  • doc2 : 我愛到家
  • doc3 : 到家美好

先對短文本進行分詞:

  • doc1 : 我愛北京 -> 我,愛,北京
  • doc2 : 我愛到家 -> 我,愛,到家
  • doc3 : 到家美好 -> 到家,美好

對分詞進行hash,建立hash表:

  • hash(我) -> {doc1, doc2}
  • hash(愛) -> {doc1, doc2}
  • hash(北京) -> {doc1}
  • hash(到家) -> {doc2, doc3}
  • hash(美好) -> {doc3}

這樣,所有短文本初始化完畢,與trie樹類似,查詢時間復(fù)雜度與文本數(shù)據(jù)量也沒有關(guān)系。

畫外音:只與被分詞后有多少數(shù)據(jù)量,即hash桶個數(shù)有關(guān)。

查詢的過程是這樣的:

假如用戶輸入“我愛”,分詞后變?yōu)閧我,愛},對各個分詞的hash進行內(nèi)存檢索

  • hash(我)->{doc1, doc2}
  • hash(愛)->{doc1, doc2}

然后進行合并,得到最后的查找結(jié)果是{doc1, doc2}。

這個方法的優(yōu)點是,純內(nèi)存操作,能滿足很大的并發(fā),時延也很低,占用內(nèi)存也不大,實現(xiàn)非常簡單快速,而且冗余索引很容易水平擴展。

畫外音:做索引高可用也不難,建立兩份一樣的hash索引即可。

它的缺點也很明顯,索引全內(nèi)存,沒有落地,還是需要在數(shù)據(jù)庫中存儲固化的短文本數(shù)據(jù),如果內(nèi)存數(shù)據(jù)全丟失,數(shù)據(jù)恢復(fù)起來會比較慢。

總結(jié)

短文本,高并發(fā),支持分詞,不用實時更新的檢索場景,可以使用:

  • ES,殺雞用牛刀;
  • 分詞+DAT(trie);
  • 分詞+內(nèi)存hash;

等幾種方式解決。

分詞檢索系統(tǒng)架構(gòu)設(shè)計,你學(xué)廢了嗎?

知其然,知其所以然。

思路比結(jié)論更重要。

責(zé)任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2022-11-03 10:47:34

分詞檢索架構(gòu)

2025-09-23 07:08:40

2025-09-29 09:49:26

2024-10-05 00:00:20

Element開源項目

2021-07-09 05:52:36

架構(gòu)開發(fā)緩存

2023-06-30 07:19:25

電源供電顯卡

2019-10-17 10:01:12

Java程序員技術(shù)

2021-06-23 06:48:42

秒殺Java電商

2019-09-16 09:34:39

2020-07-06 09:07:30

爬蟲彈幕發(fā)射器

2020-11-09 09:58:49

架構(gòu)雙十一開發(fā)

2022-07-05 09:56:42

搜索搜索引擎

2025-11-17 09:06:13

架構(gòu)計數(shù)業(yè)務(wù)數(shù)據(jù)庫

2023-03-09 07:51:23

性能提升數(shù)據(jù)庫

2025-04-22 08:55:31

2011-11-01 11:01:47

優(yōu)派投影機

2024-08-06 08:13:26

2020-06-30 15:50:16

MySQL速度執(zhí)行

2021-03-12 08:56:25

電腦裝機軟件Edge瀏覽器
點贊
收藏

51CTO技術(shù)棧公眾號

a级片在线免费| 欧美黑人性生活视频| 亚洲成色777777女色窝| 国产亚洲综合视频| 刘亦菲一区二区三区免费看| 亚洲一区二区精品视频| 毛片av在线播放| 欧美一区在线看| 午夜精品在线视频| 久久国产三级| 日韩精品在线观看一区| 触手亚洲一区二区三区| 亚洲欧美日韩综合aⅴ视频| 成人免费性视频| 精品一区二区久久| 欧美一区二区三区电影在线观看| 国产伦精品一区二区三区千人斩| 美女精品视频一区| 日韩欧美一区二区三区在线观看 | 精品久久一二三| 成人激情视屏| 亚洲激情视频在线播放| 日韩精品黄色| 麻豆精品蜜桃视频网站| 亚洲国产精品大全| 午夜影院免费在线| 欧美一区二区高清| 亚洲一区三区| 成人精品动漫| 亚洲午夜精品久久久久久久久久久久 | 91精品国产一区二区三区香蕉| 一区二区三区美女| 欧美丰满少妇xxxxx| 日韩高清三级| 亚洲不卡一卡2卡三卡4卡5卡精品| 成人在线观看毛片| 天堂在线第六区| 国产伦精品一区二区三区四区免费| 日韩国产精品一区二区三区| 国产精自产拍久久久久久蜜| 成人污污视频在线观看| 午夜久久av| 在线观看亚洲区| 久久r热视频| 欧美极品aⅴ影院| 欧美中日韩在线| 天堂√8在线中文| 99久久精品国产精品久久| 一区二区三区国产福利| 日韩精品成人一区二区在线| 日本一区二区精品| 男女性色大片免费观看一区二区| 精品久久精品久久| 蜜桃精品视频在线| 91av资源网| 亚洲国产精品一区二区久久恐怖片 | 91制片在线观看| 亚洲天堂av在线免费| 伊人久久大香| 国产精品久久久久久久久久东京| 香蕉视频在线免费看| 日韩午夜激情视频| 欧洲成人一区| 日韩美女免费线视频| 黄色成人精品网站| 久热精品视频在线免费观看| 国产在线网站| 日韩欧美在线影院| 99久久久国产| 91精品在线影院| 韩国精品免费视频| 国产精品视频一区二区图片| 欧美日韩国产电影| 精品中文字幕一区二区三区| 91亚色免费| 国产精品资源在线| 深夜宅男网站免费进入| 欧美老年两性高潮| 18成人免费观看视频漫画| 五月天精品一区二区三区| 成人性生交大片免费看在线播放| 亚洲综合丝袜美腿| 日韩精品卡一| 97成人在线视频| 久久国产精品久久w女人spa| 国产男女激情视频| 欧美精选一区二区| 动漫3d精品一区二区三区乱码| 国产一区二区不卡视频| 久久午夜国产精品| 欧美18hd| 色偷偷一区二区三区| 亚洲国产91视频| 欧美丰满美乳xxx高潮www| 日本成人伦理电影| 91在线看网站| 国产欧美一区在线| av中文在线资源库| 国产日韩欧美中文| av电影在线观看完整版一区二区 | av网站在线免费| 91成人国产精品| 日韩资源在线| 中文字幕日韩欧美| 韩日精品视频| www.男人的天堂| 中文字幕日韩视频| 久久成人免费| 亚洲mv在线| 久久免费视频在线| 高清shemale亚洲人妖| 免费大片黄在线观看视频网站| 欧美亚洲视频在线看网址| 国产一区二区三区蝌蚪| 这里只有精品66| 狠狠网亚洲精品| 高清av在线| 国产99久久久欧美黑人| 成人综合在线视频| 亚洲区欧洲区| 国产精品区一区二区三在线播放| 亚洲免费观看高清完整版在线观看 | 欧美少妇一区二区三区| 欧美网站在线观看| 福利资源在线久| 久久视频免费观看| 久久精品国产免费看久久精品| av基地在线| 国产成人精品福利一区二区三区 | 国产不卡精品视男人的天堂| 国产精品一区二区99| 美女日批免费视频| 精品爽片免费看久久| 久久男女视频| 97视频在线观看网站| 国产日本欧美一区二区三区在线| 国产精品欧美极品| 亚洲网址在线观看| 99免费视频观看| 欧美日本亚洲视频| 久久久国产午夜精品| 国产精品亚洲综合在线观看| 国产精品日韩三级| 尤物99国产成人精品视频| 大桥未久av一区二区三区中文| 爱情电影社保片一区| 91麻豆天美传媒在线| 亚洲欧洲xxxx| 成人午夜在线免费| 在线高清欧美| 久久久精品麻豆| 91av国产在线| 亚洲一区二区中文在线| 国产高清欧美| 91caoporm在线视频| 蜜桃传媒视频麻豆一区 | 亚洲一区二区不卡视频| 欧美一个色资源| 青草av.久久免费一区| 成年人在线看片| 久热在线中文字幕色999舞| www.亚洲激情.com| 粉嫩精品导航导航| 性色a∨人人爽网站| 国产精品视频在线播放| 狠狠色狠色综合曰曰| 亚洲视频中文| 1区2区3区在线| 97国产在线播放| 欧洲精品在线视频| 91久久精品一区二区三| 国产伦理一区| 天天插天天操天天射| 色偷偷一区二区三区| 在线日韩中文| 欧美少妇精品| 国产1区2区在线| 国产精品∨欧美精品v日韩精品| 午夜伊人狠狠久久| 中日韩脚交footjobhd| 日本午夜激情视频| 91wwwcom在线观看| 一区二区不卡在线播放| 国产成人澳门| 手机在线看福利| 国产一区二区在线播放| 国产丝袜一区二区三区免费视频| 色哟哟欧美精品| 欧美日韩国产一区二区| 一区二区三区在线视频观看| 日韩中文一区二区| 菠萝蜜视频在线观看一区| 亚洲天堂免费看| 欧美性三三影院| 欧美电影影音先锋| 日本国产一区二区三区| 国产又爽又黄ai换脸| 制服丝袜亚洲网站| 99电影网电视剧在线观看| 五月天久久比比资源色|