搜尋的功能, 首要選擇就是 Apache 的 Jakarta Lucene, 但是Lucene並不是一個已經包裝好的搜尋工具, 它只是一個軟體套件, 使用它必須要自己額外多下一些功夫, 寫一些程式, 就可以完成搜尋網頁的目的, 也可省下一筆經費.

搜尋的第一個步驟, 就是要產生一份所有網頁的Index, 在Lucene只有製作Index reposity的API, 卻沒有解析html/jsp等網頁的API, 而取得網頁有兩種方法, 第一種就是利用網頁的crawler/spider, 對自己的網站"爬"出所有的網頁, 這個方法可以保證, "爬"到的網頁一定都是 "reachable from user", 對於我們有一堆index_backup1.jsp, index_backup2.jsp的網站來說, 這是比較適合的方法. 另外一種方法是直接從local web server的網站資料夾裡面, 取出所有的網頁, 這種方法比較簡單, 但會把很多有的沒的網頁通通都撈出來.

取得網頁後, 就要用html parser解析html網頁, 一樣有兩種方法, 一種是使用直接解析的方法, Unweaving a Tangled Web With HTMLParser and Lucene 這是人家已經寫好的解析套件, 另一種則是用 html lexical analyzer, 也就是JavaCC, 利用Compiler Compiler製作Html Parser, 這也是Lucene的範例裡面提供的方法, 這個方法學術味濃厚, 不是一般人可以做到.

取得網頁, 利用Parser分離出網頁內容後, 就可以塞到Index repository裡面, 也就完成了index的前置工作, 再來就是搜尋的部分, 這個部分很簡單, Lucene提供了一個results.jsp的範例, 它實作了如何產生分頁搜尋結果的功能.

另外看一下這篇文章 The Lucene Search Engine, 作者已經把方法跟過程完整地寫出來了.
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 yaocl 的頭像
    yaocl

    cctg

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