精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Erlang實戰建立文本索引

開發 開發工具
我們今天將改進作者以前建立文本索引的方式,使用ETS來存儲單詞及其索引列表,同時拆分詞使用Erlang提供的string:token模塊,更加靈活和可移植性。

為文本建立索引是文本信息處理的一個重要的任務,給定一個由英文單詞構成的文件,為文件中所有單詞建立索引,記錄每個單詞出現的行號和每行出現的次數,并將索引存入一個文件。在Erlang實戰練習(六)中我強調了當時建立文本索引的時候太粗糙,一是使用了盡量規避的進程字典的方式;二是分詞使用的是正則表達式,不夠靈活。本文將改進我以前建立文本索引的方式,使用ETS來存儲單詞及其索引列表,同時拆分詞使用Erlang提供的string:token模塊,更加靈活和可移植性。

word_index.erl文件的總體結構如下:

  1. -module(word_index).    
  2. -export([start/2]).    
  3. -import(re, [run/2,replace/4]).    
  4. -import(string,[substr/3]).   
  5. %% start兩個參數:FileIn表示要建立索引的文本文件,FileOut表示索引保存的目標文件start(FileIn,FileOut) ->  
  6.     {_First,Second} = file:open(FileIn,read),%% 只讀打開FileIn文件   
  7. if 
  8.         _First =:= ok ->  
  9.             LineList = readFile(Second,0),%% 函數readFile/2的功能是將文本以行為單位,存入列表                
  10. %io:format("~nfile contents:~p~n",[LineList]),  
  11.             TableID = ets:new(index,[ordered_set]),%% ets:new創建一個“鍵值”搜索表,
  12. 存儲鍵值映射元祖,設置表名為index,表的類型為ordered_set                
  13. index(FileOut,LineList,TableID);%% 為文本中的每一行建立單詞索引              
  14. _First =/= ok ->  
  15.             io:format("Open file error: file doesn't exist!")  
  16.     end.  

readFile/2函數代碼如下:

  1. %% 讀取文本每一行,以{Line,LineNo}為元組存入列表中readFile(S, LineNo) -> readFile(S,LineNo,[]).  
  2.  
  3. readFile(S, LineNo, Ret) ->  
  4.     UpdateLineNo = LineNo +1,  
  5.     OneLine = io:get_line(S,''),%% 讀取文件中的一行內容      if 
  6.         OneLine =:= eof ->  
  7.              io:format("Read file EOF!"),  
  8.              file:close(S),  
  9.              lists:reverse(Ret);  
  10.         OneLine =/= eof ->  
  11.             readFile(S,UpdateLineNo, [{OneLine,UpdateLineNo} | Ret])  
  12.     end. 

index/3函數代碼如下:

  1. index(File,LineList,TableID) ->  
  2.     if 
  3.         length(LineList) =:= 0 ->  
  4.             ToList = ets:tab2list(TableID),  
  5.             io:format("index is:~n~p~n",[ToList]),  
  6.             writeToFile(File,ToList),  
  7.             io:format("create index success! ");  
  8.         length(LineList) =/= 0 ->  
  9.             First = lists:nth(1,LineList),  
  10.             processOneLine(First,TableID),  
  11.             index(File,lists:delete(First, LineList), TableID)              
  12.     end.  
  13.  
  14. %% 處理一行文本processOneLine(OneLine, TableID) ->  
  15.     {Element, LineNo } = OneLine,  
  16.     %io:format("Line no:~p~n",[LineNo]),  
  17.     Words = string:tokens(Element,"\n\t "),  
  18.     matchWords(Words,LineNo,TableID).  
  19.  
  20. matchWords([], LineNo, TableID) ->   
  21.     io:format("process line(~p) success!~n",[LineNo]);  
  22.       
  23. matchWords(Words, LineNo, TableID) ->  
  24.     %io:format("Words:~p~n",[Words]),  
  25.     Word = lists:nth(1,Words),  
  26.     _Value = ets:lookup(TableID,Word),%%返回值為匹配Word的元組列表       if 
  27.         length(_Value) =:= 0 -> %% Word還未被索引,直接插入此Word索引                ets:insert(TableID,{Word,[{LineNo,1}]} );  
  28.         length(_Value) =/= 0 -> %% Word已被索引,更新Word索引列表                 KVs = lists:nth(1,_Value),  
  29.             Value = element(2,KVs),  
  30.             ets:insert(TableID,{Word, insertRec(Value,LineNo) } )  
  31.     end,  
  32.     matchWords(lists:delete(Word, Words), LineNo, TableID).  
  33.  
  34. %% 處理行號與出現次數元組列表insertRec(List,LineNo) -> insertRec(List,LineNo,length(List)).  
  35.  
  36. insertRec(List, LineNo, 0) ->   
  37.     [{LineNo, 1} |List];  
  38. insertRec(List, LineNo, Ret) ->  
  39.     First = lists:nth(Ret,List),  
  40.     {LN, Num} = First,  
  41.     if 
  42.         LN =:= LineNo ->  
  43.             Temp = lists:delete(First, List),  
  44.             [{LineNo, Num+1} | Temp];  
  45.         LN =/= LineNo ->  
  46.             insertRec(List, LineNo, Ret-1)  
  47.     end.  
  48.              
  49.  
  50. %% 將索引寫入文件writeToFile(File,ToList) ->  
  51.     {ok,S} = file:open(File,write),  
  52.     lists:foreach(fun(X) -> io:format(S,"~p.~n",[X]) end, ToList),  
  53.     file:close(S). 

至此,我已經將使用ets存儲鍵值大型表來存儲單詞索引列表的程序講完了,大家自己回去動手試驗吧。本文是繼續上文的一個續篇,是一種改進的建立文本索引方式。以后我還好繼續通過實戰練習來探討Erlang的學習與總結思考,謝謝大家的關注。

原文:http://www.cnblogs.com/itfreer/archive/2012/05/07/Erlang_in_practise_index.html

【編輯推薦】

  1. Erlang之父Joe Armstrong訪談:程序調試與啤酒
  2. Scala和Erlang,以及多核主導的未來
  3. Erlang面向分布與并發的編程語言
  4. 看Erlang中Actor模型的執行方式和優劣
  5. Erlang視點:并行計算和云計算
責任編輯:彭凡 來源: 博客園
相關推薦

2012-05-08 13:42:24

Erlang

2012-05-14 13:58:19

Erlang

2010-11-29 10:22:46

Sybase建立索引

2010-05-31 12:31:42

MySQL建立索引

2011-08-16 13:27:34

索引

2011-08-15 18:20:05

建立索引SQL Sever數據

2024-03-01 09:57:19

數據庫檢索項目

2010-09-06 17:08:23

2013-11-25 15:12:26

iOS開發

2010-09-17 14:13:20

SIP業務Erlang

2012-12-04 10:29:47

PostgreSQL索引

2010-10-26 16:54:16

oracle全文索引

2011-04-01 15:36:24

索引SQL Server

2010-08-06 13:26:29

DB2建立databa

2018-05-08 18:26:49

數據庫MySQL性能

2025-11-13 08:05:57

2022-02-11 12:55:00

前綴索引索引值

2012-12-24 13:54:13

WebjQuery前端

2011-08-17 20:48:25

索引建立語句非聚集索引唯一索引

2012-05-07 08:47:25

Erlang
點贊
收藏

51CTO技術棧公眾號

最新中文字幕免费| 欧美私人情侣网站| 超碰在线人人干| 99精品国产一区二区青青牛奶| 亚洲国产精品久久久久| 乱妇乱女熟妇熟女网站| lutube成人福利在线观看| 理论电影国产精品| 欧美激情一级精品国产| 日韩av在线看免费观看| 国产一区 二区| 精品久久久久久久久中文字幕| 无码免费一区二区三区免费播放| 性猛交xxxx乱大交孕妇印度| 久久精品123| 久久亚洲欧美日韩精品专区 | 菠萝蜜视频国产在线播放| 国产一区二区三区黄视频| 午夜精品久久久久久99热软件| 东方伊人免费在线观看| 久久久久久亚洲精品美女| 欧美日韩在线一区| 无颜之月在线看| 国产大学生校花援交在线播放| 国产成人综合网站| 国产精品嫩草影院久久久| 日韩特黄一级片| 亚洲成人99| 尤物九九久久国产精品的特点| 亚洲欧美高清在线| 成人在线啊v| 欧洲一区在线电影| 一区二区传媒有限公司| 午夜dj在线观看高清视频完整版| 国产精品免费丝袜| 蜜桃传媒视频麻豆一区| 好吊色在线观看| 寂寞少妇一区二区三区| 国产精品久久久久久久9999| a v视频在线观看| 欧美精品18| 久久网福利资源网站| 欧美人与性囗牲恔配| 欧美电影在线观看免费| 欧美成人猛片aaaaaaa| 亚洲综合av在线播放| 亚洲综合在线电影| 色婷婷亚洲综合| 日本中文字幕网址| av在线加勒比| 亚洲国产一区二区三区青草影视| 潘金莲一级淫片aaaaa免费看| a√在线中文网新版址在线| 久久蜜桃一区二区| 青娱乐国产91| 成年在线电影| 中国色在线观看另类| 日本一区二区久久精品| 成人福利在线| 国产精品剧情在线亚洲| 亚洲五月六月| 国产一二区在线| 亚洲日本电影在线| 欧美少妇一级片| 在线观看午夜av| 亚洲午夜久久久久久久久电影网| 99热亚洲精品| 五月天国产在线| 色综合久久88色综合天天| 午夜dv内射一区二区| 欧美123区| 欧美日韩免费观看一区三区| 亚洲成人天堂网| 婷婷丁香久久| 日韩精品中文字幕在线一区| 大乳护士喂奶hd| 亚洲自拍电影| 中文字幕一区日韩电影| 男女做暖暖视频| 怡红院精品视频在线观看极品| 7777精品视频| 一级黄色免费看| 国产精品羞羞答答xxdd| 国产日韩三区| 国产在线免费观看| 中文字幕综合网| 18黄暴禁片在线观看| 色在线中文字幕| 欧美三级日本三级少妇99| 中文国产在线观看| 亚洲电影男人天堂| 日韩视频第一页| 欧美一级高潮片| 日精品一区二区| 99re国产| 久久久资源网| 亚洲精品自拍动漫在线| 国产主播在线看| 深夜福利亚洲| 亚洲精品久久久久久久久久久久 | 一区二区三区视频免费观看 | av免费在线免费| 午夜精品福利一区二区蜜股av | 午夜啪啪免费视频| 超碰激情在线| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲一级二级片| 99视频+国产日韩欧美| 国产精品久久久久久久久久 | 国产精品正在播放| 久久天天狠狠| 1stkiss在线漫画| 91福利精品视频| 国模无码视频一区| 99re66热这里只有精品8| 欧美在线www| 亚洲成a人片在线| 国产精品麻豆久久久| 91九色丨porny丨国产jk| 久久精品 人人爱| 国产视频自拍一区| 亚洲一区二区91| 久久国产精品免费| 欧美日韩亚洲在线| h片在线观看下载| 欧美精品乱码久久久久久| 亚洲天堂网一区二区| 欧美国产91| 国产伊人精品在线| 国产在线一在线二| 懂色av中文一区二区三区天美 | 中文字幕av第一页| 不卡视频一二三四| 香蕉视频免费版| 另类一区二区| 亚洲色图欧美制服丝袜另类第一页| 国产在线观看免费av| 国产伦精品一区二区三区免费迷| 亚洲精品视频一区二区三区| 亚洲最大网站| 日韩精品极品视频| 免费观看一级视频| 国产91丝袜在线播放九色| 糖心vlog在线免费观看| 日本在线一区二区| 色多多国产成人永久免费网站 | 91麻豆精品国产91久久久使用方法| 亚洲激情视频小说| 美女尤物久久精品| 蜜桃免费一区二区三区| 中文字幕21页在线看| 亚洲女人被黑人巨大进入al| 日日噜噜噜噜人人爽亚洲精品| www.色精品| 免费看黄在线看| 欧美成人专区| 国产成人精品一区二区三区| 麻豆av电影在线观看| 欧美性猛交xxxx黑人| 久久精品国产亚洲AV熟女| 麻豆久久婷婷| 日韩av在线电影观看| 日本欧美韩国| 久久精品福利视频| 精品人妻一区二区三区换脸明星| 亚洲一区二区五区| 欧美做受喷浆在线观看| 久久久人人人| 午夜精品短视频| www 久久久| 欧美黑人xxxx| 欧美巨乳在线| 欧美亚洲一区二区三区四区| 三级影片在线观看| 成人综合婷婷国产精品久久免费| 日韩精品―中文字幕| 国产精品一区三区在线观看| 日韩视频精品在线| 超碰免费在线97| 激情久久av一区av二区av三区| 懂色av粉嫩av蜜乳av| 日韩精品亚洲一区| 宅男一区二区三区| 另类视频一区二区三区| 国产精品一区专区| 欧美日韩成人免费| 国产激情视频在线播放| 亚洲国产视频a| av无码av天天av天天爽| 日韩福利视频网| 五月天男人天堂| 久久狠狠久久| 亚洲精品日韩专区silk| 精品综合久久久久| 国产精品chinese| 欧美不卡三区| 精品国模一区二区三区欧美| 555www成人网| 精品美女在线观看视频在线观看| 亚洲激情视频网| 亚洲天堂网在线视频| 亚洲香蕉伊在人在线观| 日本猛少妇色xxxxx免费网站| 国产精品88888| 国模杨依粉嫩蝴蝶150p| 欧美激情一区| 神马影院午夜我不卡| 第一区第二区在线| 国产在线精品一区免费香蕉| 男人的天堂免费在线视频| 久久久成人av| 国产大学生校花援交在线播放| 精品国产亚洲一区二区三区在线观看| 日韩中文字幕高清| 香蕉影视欧美成人| 亚洲成人生活片| 国产亚洲一区二区在线观看| 色诱av手机版| 久久99精品久久久| 熟女少妇精品一区二区| 日韩亚洲国产欧美| 91国在线高清视频| 99久久综合| 亚洲 日韩 国产第一区| 亚洲大片精品免费| 狠狠色综合欧美激情| 欧美影院精品| 成人h视频在线观看播放| 欧美va在线观看| 欧美做受高潮电影o| 99riav视频在线观看| 欧美成年人网站| 在线观看完整版免费| 一区二区三区 在线观看视| 四虎免费在线观看| 精品久久久久久久久久久久久久久 | 久久综合九色综合欧美就去吻| 亚洲五月激情网| 久久99国产精品久久| 爱情岛论坛成人| 天堂va蜜桃一区二区三区| 男人天堂av片| 激情亚洲网站| 免费视频爱爱太爽了| 国产主播精品| 免费超爽大片黄| 在线欧美不卡| 国产一区二区四区| 激情婷婷欧美| 欧美 国产 综合| 国产精品三上| 岳毛多又紧做起爽| 日韩成人av影视| 亚洲欧美国产日韩综合| 麻豆精品视频在线观看免费 | 91蜜桃视频在线观看| 亚洲国产精品久久久男人的天堂| 欧美久久久久久久久久久久| 一区二区理论电影在线观看| 精品人妻在线播放| 婷婷综合另类小说色区| 免费黄色网址在线| 一本一道综合狠狠老| 中文字幕免费高清网站| 欧美日韩一卡二卡| 国产成人精品av在线观| 亚洲成人aaa| 奇米影视888狠狠狠777不卡| 亚洲天堂色网站| 日本最新在线视频| 九九久久久久99精品| 国产伦子伦对白在线播放观看| 热久久免费国产视频| 黄色欧美视频| 91精品久久久久久蜜桃| 欧美电影在线观看完整版| 日本午夜一区二区三区| 五月婷婷六月综合| 97干在线视频| 久久久久久久欧美精品| 在线看免费毛片| 成人午夜免费电影| 真实乱视频国产免费观看| 国产精品久久久久久久久搜平片| 青青草成人免费| 狠狠操狠狠色综合网| 亚洲熟女乱色一区二区三区久久久 | 国产欧美一区二区精品秋霞影院| 91n在线视频| 午夜成人免费电影| 亚洲天堂网在线观看视频| 亚洲第一网站男人都懂| 在线观看免费网站黄| 欧美大片免费观看| 精品3atv在线视频| 5g国产欧美日韩视频| 婷婷成人影院| 老汉色影院首页| 久久久久久一区二区| 美女被爆操网站| 中文成人综合网| 欧美一区二区激情视频| 91精品国产综合久久福利| 深夜影院在线观看| 美女性感视频久久久| 自拍网站在线观看| 99久久综合狠狠综合久久止| 九九久久婷婷| 日本一级黄视频| 免费黄网站欧美| 天天躁日日躁狠狠躁av麻豆男男 | 高清视频在线观看一区| 欧美美女在线| www.在线观看av| 麻豆国产精品777777在线| 国产女人18毛片水真多18| 一区二区中文视频| 日日骚av一区二区| 亚洲第一精品自拍| aaa大片在线观看| 国产精品久久久久久久久久99| 色橹橹欧美在线观看视频高清| 懂色av粉嫩av蜜臀av| 蜜乳av一区二区| 蜜桃久久精品成人无码av| 午夜精品在线看| 性一交一乱一伧老太| 最好看的2019的中文字幕视频| 在线手机中文字幕| 国产精品99久久久久久久| 久久久久久久久久久9不雅视频| 免费黄色福利视频| av成人老司机| 精品无码m3u8在线观看| 日韩欧美亚洲国产另类| 成视频免费观看在线看| 国产综合久久久久久| 色偷偷综合网| 国产原创精品在线| 国产农村妇女毛片精品久久麻豆 | 91精品国产综合久久国产大片| 色影视在线观看| 国产精品直播网红| 成人短片线上看| 奇米影音第四色| 国产精品久久久久久一区二区三区 | 人妻体体内射精一区二区| 亚洲视频1区2区| 国产情侣在线播放| 欧美巨大黑人极品精男| 亚洲精品一区二区三区在线| 欧美做受777cos| 国产成人午夜电影网| 国产精品自拍视频一区| 亚洲激情免费观看| 午夜精品成人av| 日韩美女一区| 久久99九九99精品| 波多野结衣爱爱视频| 亚洲第一偷拍网| 亚洲成人短视频| 亚洲看片网站| 国产另类ts人妖一区二区| 美女毛片在线观看| 精品国产一区二区三区不卡 | 亚洲mv在线观看| 丝袜视频国产在线播放| 国产精品第一区| 久久网站免费观看| 性一交一黄一片| 午夜欧美一区二区三区在线播放| 亚洲人视频在线观看| 日韩美女免费线视频| 久久要要av| 美女流白浆视频| 日韩欧美一区二区在线| 91美女视频在线| 99久热re在线精品996热视频| 亚洲伊人网站| 国产精品麻豆免费版现看视频| 日韩亚洲欧美在线观看| 正在播放日韩精品| 亚洲精品高清视频| 国产高清不卡二三区| 在线观看日韩中文字幕| 色偷偷88888欧美精品久久久| 日本精品在线观看| 欧美国产亚洲一区| 中文字幕一区二区三区四区不卡| 六月婷婷综合网| 国产精品欧美一区二区三区奶水| 欧美+亚洲+精品+三区| 性欧美成人播放77777| 欧美精品1区2区| 国产拍在线视频| 四虎免费在线观看视频| 久久综合网色—综合色88| 国产毛片毛片毛片毛片毛片| 国产91精品青草社区| 欧美在线视屏|