瓦拉莫語翻譯小弟比來在寫一個資料庫 翻譯搜索網頁,資料是文字檔 翻譯社前提是,資料檔可能隨時會更新, 而我沒有想要轉進去MySQL資料庫,感覺有點麻煩。 我嘗試了幾種搜尋的體式格局: ***方式1*** 資料檔是近300Mb的TXT檔,BIG5編碼 把原始檔案拆成三十多個檔,用ajax要求php,php是用: foreach(file($filename) as $fli=>$fl){ if(mb_stripos($fl 翻譯公司 $needle,0,"UTF-8")!==false){ //找到資料的處置懲罰... } } 這個方式搜尋一次費時約12-15秒閣下 ***方式2*** 先把資料檔案優化成TAB分欄位 翻譯文字檔,大小剩下一個42Mb 翻譯檔案 直接用SplFileObject()逐行比對環節字: $file = new SplFileObject($filename); while (!$file->eof()) { $fl = $file->fgets(); if(mb_stripos($fl, $needle 翻譯公司0,"UTF-8")!==false){ //找到資料的處置... } } 這個方式搜索並沒有比較快,一次也費時約12-15秒左右 ***方式3*** 再把檔案每行先處置過,留下含有環節字部分看成索引檔, 然後再用方法2 翻譯體式格局搜索,得到行數再回傳此行數的原始檔那行資料, 原本想說搜索的文字檔小約剩下1/3,可以加速搜索速度, 結果出乎料想的,這方式並沒有快幾何,梗概只差1秒。 ***方式4*** Google爬了一下文,有人保舉用shell_exec呼喚Linux內建的grep搜尋功能,公然用這方 式搜尋速度飛快,約0.3秒就搜索終了了。。-> 翻譯社|,-> 翻譯公司|的-> 翻譯 $strResult = shell_exec('grep -i "'.$needle.'" '.$filename); $aResult = explode(" ",$strResult); foreach($aResult as $key => $value){ //找到資料的處理... } 可是問題來了, #問題1:除錯困難 當我測驗考試把這方法運用到其他資料檔的時辰,發現某些樞紐字明明有資料,利用方法1-3都 找獲得,但是利用方式4就是找不到,不知道該怎麼debug 翻譯社 並且搜尋關頭字用英文比較會有問題,中文就沒事。 #問題2:網站移植困難 假如要把網站移到非linux架 翻譯主機上,就沒有舉措用方式4了,不知道有無php內建的 搜索功能,效能可以比擬linux的grep的?

本篇文章引用自此: https://www.ptt.cc/bbs/PHP/M.1473353416.A.FCA.html有關翻譯的問題歡迎諮詢天成翻譯社

arrow
arrow
    文章標籤
    翻譯社
    全站熱搜
    創作者介紹
    創作者 rachelr35gwe 的頭像
    rachelr35gwe

    rachelr35gwe@outlook.com

    rachelr35gwe 發表在 痞客邦 留言(0) 人氣()