大家會點寫這功能?

一個folder入邊有一些檔案
我想一上個網就 run下邊個程式 search晒出來
但應該冇效率或好慢  唔知大家做這個功能會用咩方法寫呢?


function find($dirPath)
        {
                if(is_dir($dirPath))
                {
                        $dir_handle = opendir($dirPath);
                        if(!$dir_handle)
                                return false;
                        else
                        {
                                while($file = readdir($dir_handle))
                                {
                                        if($file != '.' && $file != '..')
                                        {
                                                        echo "$file";       

                                        }
                                }
                                closedir($dir_handle);
                           
                        }
                }
                return true;
        }
               

                find(".");

兩種處理方法:
1. 係search 演算法下功夫, 或尋找一些library可以快速搜尋(realtime search) OS下面文件 (不是最好的方法, 因為既時搜尋牽涉到 hard disk的存取, 一定唔會快!!! )
2. 自己 build index, 然後定時更新 index, 搜尋時只需要搜尋以建立的索引(index)文件. (推薦使用, Windows Search都係用類似的方法).
簡單原理:
- 用你寫的的程序loop (o西)你想search既driver / folder (iterate the drive / folder), 取得完整路徑+檔案名稱, 以文字格式儲存. set cron job/job scheduller say, run for every 5 min to update the indexing file.
- 另外寫個程序將這個indexing文件讀取至memory (既係用 array, List 等東西裝住), 直接search呢D container...


呢個可以係一個小型search engine既 exercise, 等師兄你實行出來後同我地分享下... source code

PS.其實Lucene 可以幫你做 build indexing 既工作, PHP 有沒有類似的東東就唔知啦...

原帖由 walter522 於 2009-6-5 08:54 發表
一個folder入邊有一些檔案
我想一上個網就 run下邊個程式 search晒出來
但應該冇效率或好慢  唔知大家做這個功能會用咩方法寫呢?


function find($dirPath)
        {
                if(is_dir($dirPath))
       ...

[ 本帖最後由 t61 於 2009-6-5 09:41 編輯 ]

TOP

我都係build個index(最簡單係一個text file)先
先後係個text file入面search
快好多

TOP

cache

TOP