目前公司的搜索系統還不完善,所有系統都只有獨立的搜索功能,而且也只能搜索特定幾個欄位的內容,隨著系統越來越多,搜索問題也就體現出來了,每新開發一個系統都要為其做一個特定的搜索功能,如果有一套全站搜索系統,他能搜索到所有系統的所有欄位元,那多方便!

  現在市面上的搜索公司都能很好的搜索單個網站的內容(當然不止搜索單個網站),如Google,只要在搜索欄內輸入:珠海 site:www.act-ioi.com.tw,就可以搜索到我們公司網站裡包括「珠海」字眼的網頁,但你有沒發現,搜索結果只有外部網的內容,而內部網裡包括「珠海」字眼的網頁卻沒有被搜索到,那是因為我們公司的內部網需要登錄才能查看,過程是這樣的,每個搜索公司都會有一個網路蜘蛛系統,Google有,百度也有,它們不分日夜的在互聯網上抓取資訊,它抓取的方法和我們平常流覽網頁是一樣的,只不過我們是有選擇性的流覽,而他是將所有鏈結都抓取(抓過的不會抓,這取決於蜘蛛系統的靈敏性),再分析並存儲到資料庫中,所以我們平時在搜索時也就是搜索此公司的資料庫。現在關鍵就是抓取這裡了,網路蜘蛛在抓取到要登錄的網頁時,不能提供用戶和密碼,它就認為到這裡結束了,登錄後的網頁沒有抓取,那我們就搜索不到了。

  那我們可能又想了,我們可以修改蜘蛛系統啊,使它能自動登錄,不就可以抓取到了?這裡還有一個用戶許可權問題,有些內容是保密的,如成本及售價之類,並不是所有人都能查看,也不能被所有用戶搜索出來,網路蜘蛛也達不到這功能,所以要自己做搜索系統。

  我們可以採用論壇的搜索方法,這種方法和網路蜘蛛不同,因為他只要搜索自已網站的內容,和我們很相似,但有點不一樣,論壇是搜索貼子,貼子一般是存在一個表裡,只要搜索一次再列表即可,查看頁面也是一個檔就行(這和我們公司的公佈系統相同),但我們有很多個系統,也就有很多個資料表,而且每個表都不一樣,跟據這些原因,我們打算這樣做:

  建立一個表,名為搜索表,基本欄位如下:

  • 表名(要搜索的表)
  • 欄位名(要搜索的表中的欄位,以分號隔開。或者搜索表中的所有欄位)
  • 查看頁面(檔案名,可能要帶參數)
  • 是否保密
  • 如何判斷許可權(當此表是要保密時要用到此欄位元,函數名及參數,可供系統直接調用)
  • 系統名字或表單名字

  將需要搜索的表資訊加入到此表中,再依據此表中的資訊迴圈搜索,因為是要搜索多個表,每搜索完一個表都會有臨時資訊,我們要把這些臨時資訊儲存起來,待搜索完所有表之後,就會有一個完整的資訊,然後需要對此資訊做分析,最後就可以列表了。

  用什麼方法保存臨時資訊呢,可以用多維陣列,或者用資料表。兩種方式的比較:陣列速度快,但較占記憶體,且沒有表易運算。表數度稍慢,但操作方便。因為搜索表時速度會較慢,所以我們這裡用陣列以加快整體速度。

  如何使保密資訊只被有許可權的用戶搜索,在「搜索表」中有「是否保密」及「如何判斷許可權」兩個欄位,「是否保密」是一個開關,當他為ON時,系統要調用「如何判斷許可權」中的函數,這些函數會跟據當前的用戶來判斷是否有許可權,沒許可權就跳過此表,接著查找下一個表。

  目前此方法還在試驗階段,近期內將會公佈出來給大家試用。

 

[回上層目錄]

除商業用途,歡迎轉載。
轉載時請勿更改、刪減、或增加任何文字;並請註明出處。
以上文字或圖片若有侵害到任何人的權益,請來信至
dcc@act-ioi.com.tw