在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 有100萬個關(guān)鍵詞存儲在文件keyword.txt中,分析一段話中分析出keyw

有100萬個關(guān)鍵詞存儲在文件keyword.txt中,分析一段話中分析出keyword.txt中包含的關(guān)鍵詞...

有100萬個關(guān)鍵詞存儲在文件keyword.txt中,分析一段話中分析出keyword.txt中包含的關(guān)鍵詞...
假設(shè)keyword.txt中內(nèi)容如下:
百度
貼吧
搜索
......
輸入文本:百度與2013年推出貼吧服務(wù)。
則命中的關(guān)鍵是:百度、貼吧

求一個高效的算法解決這個問題。

回答
編輯回答
放開她

只能說,這里面太多因素了

輸入要做分詞,分詞這件事就是一個要求很高的算法了

關(guān)鍵詞庫放txt的,那為了減少io肯定要做內(nèi)存緩存的,百萬級中文關(guān)鍵詞(最少是個二字詞組吧?)內(nèi)存放不下,那緩存算法也要考慮,比如怎么篩選出要放內(nèi)存繼續(xù)放文件內(nèi)存里只存偏移

如果是工程一點(diǎn)的問題,就是說要求能跑一次求多個輸入的命中,那顯然還得對關(guān)鍵詞做分類排序,重新構(gòu)建內(nèi)存中的結(jié)構(gòu)來提高命中率。

但是緩存類的問題個人覺得不跑到一個數(shù)量級把緩存 起來,是效率很低的。

再有一個是硬件因素,內(nèi)存大肯定全塞進(jìn)去,塞不進(jìn)去那就要考慮數(shù)據(jù)結(jié)構(gòu),而固態(tài)的特性和機(jī)械硬盤的特性會影響這個數(shù)據(jù)結(jié)構(gòu)的設(shè)計,比如 block 的大小等等。

總而言之,這個問題理論上很難給出特定算法,你還不如全放進(jìn)數(shù)據(jù)庫,在sql上做優(yōu)化,至少硬盤/內(nèi)存這層硬件因素的優(yōu)化你不需要頭疼了。

2018年6月4日 15:28