亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript 上萬關鍵字瞬間匹配實現代碼

2019-11-20 22:33:43
字體:
來源:轉載
供稿:網友
提到關鍵字搜索,首先聯想到的無非就是使用一些indexOf,replace之類的字符函數,最多加上一些正則表達式而已.實現起來雖然很簡單,但是這背后的效率問題可曾仔細考慮過?例如論壇中的關鍵字過濾,一般情況下需過濾的關鍵字數量及檢測的文本長度都不大,所以這一瞬間的過程沒有太多值得關注的地方。但若關鍵字數量不在是屈指可數,而是有成千上萬, 并且待檢測的文本也是一長篇大論,結果可不再是那么樂觀了。大家都知道,每多一個關鍵字,就要增加一次全文的檢索,最終花費的時間將遠遠超出可接受的范圍內。
  
  既然考慮的是那種極端的關鍵字搜索,通常的逐個遍歷搜索顯然是行不通的。如今用的是JavaScript,若不使用Hash表實在是太對不起這門語言了。有著對表特天獨厚的支持,不妨就拿出少量的空間來換取大量的時間吧。
  
  先看個例子,比如有如下的關鍵字: foo1,foo2,bar1,bar2,既然要用空間換時間,因此搜索之前先將他們預處理。前面提到了JS靈活又高效的表,顯而易見,使用樹的結構是最有優勢的。即使不明白,也沒關系,最終實現結構正如如下的代碼,熟悉JSON同樣很親切:
復制代碼 代碼如下:

var Root =
{
    f:
    {
        o:
        {
            o:
            {
: true,
: true
            }
        }
    },
    b:
    {
        a:
        {
             r:
            {
: true,
: true
            }
        }
    }
};


這一層層的結構正如一棵樹,每個字符便是樹的一個分枝,到了最后一個字符便是樹葉,不再有新的節點。
  此時你應該明白了,只要對文章的每個字沿著這棵樹往下搜就是了。能到達樹葉的,就說明當前字符就是關鍵字的一個;中途尋找不到對應枝干的,當然就不是關鍵字。

  例如foo1,順著Root結構向下訪問,最終到達Root['f']['o']['o']['1'],即完成了一次匹配。之后跳過foo1的長度,繼續往后檢索。

  因此,整篇文章只需一次檢索,即可找出每個關鍵字的位置。
  由于JS的hash表性能非常高,所以所謂的尋找枝干也就非常的快了。因為JS的靈活性,實現此效果的代碼同樣很簡短。
  
  事實上可以發現,關鍵字的數量與搜索的時間并沒太多的關系,那僅僅影響了樹的寬度而已,只有文章的長度才是決定搜索的時間。
  
  來一次極限測試:
  關鍵字: 成語全集(19830條)
  內容:誅仙全集.txt (1659219字)
  用時:935ms
  (Chrome26 / i3-2312的CPU)
160萬字的文章,匹配2萬個關鍵字,還不到1秒的時間??梢?,充分利用JavaScript的靈活性,仍能發揮很大的潛力。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩视频免费在线观看| 懂色av中文一区二区三区天美| 亚洲综合色激情五月| 精品国产一区二区三区四区在线观看| 亚洲欧美综合另类中字| 日韩av在线不卡| 中文字幕在线看视频国产欧美在线看完整| 国模精品一区二区三区色天香| 福利一区视频在线观看| 国产精品一区久久| 久久免费视频这里只有精品| 日本久久久久久久久久久| 国产一区二区视频在线观看| 亚洲精品在线视频| 久久久久久噜噜噜久久久精品| 91sao在线观看国产| 精品久久久久久久久久久| 精品中文字幕久久久久久| 欧美日韩性视频| 国产精品久久久久9999| 日韩欧美成人免费视频| 国产精品自拍小视频| 精品国偷自产在线视频99| 中文字幕精品在线视频| 国产啪精品视频| 成人黄色片网站| 亚洲国产精品999| 欧美日韩国产区| 亚洲一区二区福利| 欧美国产日韩二区| 国产精品老牛影院在线观看| 色噜噜狠狠狠综合曰曰曰| 国产精品久久久久久久久久久久| 欧美人成在线视频| 91精品国产网站| 国产香蕉97碰碰久久人人| 久久人人爽人人爽人人片av高清| 亚洲午夜国产成人av电影男同| 成人精品网站在线观看| 日韩电影免费观看中文字幕| 国产精品精品一区二区三区午夜版| 成人免费视频在线观看超级碰| 国产va免费精品高清在线| 91av在线视频观看| 中文字幕不卡av| 欧美精品午夜视频| 91精品国产自产在线观看永久| 国产精品人人做人人爽| …久久精品99久久香蕉国产| 亚洲精品资源在线| 国产精品成av人在线视午夜片| 一区二区欧美久久| 日韩视频免费中文字幕| 在线丨暗呦小u女国产精品| 国产成人啪精品视频免费网| 国产精品一区二区三| 国产精品高潮视频| 亚洲国产精品成人一区二区| 欧美激情第6页| 久久中文久久字幕| 疯狂做受xxxx欧美肥白少妇| 欧美做受高潮电影o| 亚洲成色777777在线观看影院| 55夜色66夜色国产精品视频| 国内精品久久久久伊人av| yw.139尤物在线精品视频| 91亚洲精华国产精华| 国产亚洲欧美视频| 欧美色视频日本高清在线观看| 伊人伊成久久人综合网小说| 欧美精品第一页在线播放| 欧美激情一级欧美精品| 国产精品久久久91| 97精品伊人久久久大香线蕉| 91精品国产色综合久久不卡98| 欧美激情视频播放| 欧美一区亚洲一区| 欧美孕妇毛茸茸xxxx| 亚洲在线观看视频| 久热国产精品视频| 91日韩在线播放| 中日韩美女免费视频网址在线观看| 国产精品亚洲视频在线观看| 久久九九热免费视频| 秋霞成人午夜鲁丝一区二区三区| 国产精品久久国产精品99gif| 国产精品视频资源| 日韩精品免费在线| 成人免费自拍视频| 亚洲欧美日本另类| 日韩欧美在线中文字幕| 欧美在线视频免费播放| 大伊人狠狠躁夜夜躁av一区| 亚洲自拍偷拍第一页| 国产亚洲精品久久久久久牛牛| 久久久精品一区二区三区| 欧美乱大交xxxxx另类电影| 国产91成人video| 国产91色在线| 欧美激情第1页| 中文字幕日韩综合av| 色偷偷88888欧美精品久久久| 亚洲欧美第一页| 国产精品久久久久久久久久ktv| 国产大片精品免费永久看nba| 日韩av在线影院| 日韩亚洲精品电影| 亚洲日韩欧美视频| 色www亚洲国产张柏芝| 欧美日韩国产色| 亚洲精品久久久久中文字幕欢迎你| 91久久精品日日躁夜夜躁国产| 欧美中在线观看| 欧美日韩中文字幕日韩欧美| 欧美激情乱人伦一区| 亚洲精品国产综合区久久久久久久| 欧美大片在线看免费观看| 97在线视频免费看| 日韩成人中文字幕在线观看| 欧美专区中文字幕| 欧美日韩国产二区| 国产精品久久久久久av下载红粉| 国产一区二区三区18| 在线观看欧美www| 亚洲精品资源美女情侣酒店| 日韩中文字幕网| 日韩一区二区三区xxxx| 亚洲精品国产精品自产a区红杏吧| 精品久久久久久久久久国产| 欧美亚洲视频在线看网址| 亚洲国产精品福利| 亚洲国产欧美在线成人app| 久久久免费精品视频| 日韩在线观看免费全| 久久久久女教师免费一区| 亚洲国产欧美一区二区三区同亚洲| 九九热最新视频//这里只有精品| 91精品国产综合久久香蕉的用户体验| 姬川优奈aav一区二区| 亚洲国产成人精品久久| 欧美精品久久一区二区| 精品国产一区二区三区久久| 久久99热精品这里久久精品| 日韩av大片在线| 日韩欧美在线第一页| 成人信息集中地欧美| 97国产在线视频| 日韩禁在线播放| 在线成人中文字幕| 欧美专区国产专区| 欧美韩国理论所午夜片917电影| 日韩大陆毛片av| 96精品视频在线| 欧美视频不卡中文| 成人a免费视频| 日韩国产精品一区| 成人黄色中文字幕| 日韩免费黄色av| 日韩极品精品视频免费观看| 欧美激情亚洲另类| 日韩电影免费观看在线| 亚洲午夜精品久久久久久久久久久久| 夜夜嗨av色综合久久久综合网| 国产精品自在线|