搜尋引擎的使用已成為目前在全球資訊網上最重要的工具之一﹐使用者日益增多﹐而目前不論在學術界或工商業界亦有各種不同的系統正在發展及使用中﹐例如Yahoo, AltaVista, Yam, Gais, Wais等。在這些系統上﹐大致被分成主動式全文檢索及被動式全文檢索二類﹐每一個系統雖然在使用的方式類似﹐但在介面上卻不儘相同﹐使得使用者在使用上會造成一些困擾。在本論文中我們準備完成一異質性搜尋引擎代理人﹐可以將這些不同系統整合在一個環境中﹐使得使用者透過我們的環境可以用同一種介面存取各種檢索系統。我們選擇以CORBA架構做為連結這些系統的平台﹐在CORBA上訂定一共同的網際網路搜尋服務(Internet Search Service, 簡稱ISS)﹐並且為每一種系統實作一object implementation﹐最後再以CGI介面連結WWW及我們的全文檢索引擎代理人﹐使得使用者可以透過WWW來使用我們的異質全文檢索引擎代理人。
近年來由於網路快速發展,及全球資訊網WWW使用者日益增多,促使WWW上網站也快速的增加,但因為網站過多,使得使用者在使用網路時經常因不知網站的網址或一些相關訊息,也因此網站的搜尋成為網路使用者經常要面臨的問題。為了克服此一問題,便促使搜尋引擎的發展。目前常使用的搜尋引擎主要分成二類,一類是主動式,如AltaVista,他是以主動的方式定時的搜尋Internet的各個網站,然後將所搜尋的資訊建構在資料庫,以供其他使用者使用。另一類是被動式的,如Yahoo,這種系統主要是以註冊的方式向檢索系統註冊,檢索系統並不會去搜尋其他的站。這些系統都有其優缺點,因此各有其使用者,以下我們列出一般搜尋引擎之問題:
由前面可知,由於不同搜尋引擎會有不同介面及其特性, 經常會造成使用者使用上的不便,因此有一些研究是希望對所有的搜尋引擎有一個單一的檢索介面,讓使用者在使用上可以更方便。這方面的系統如PLS[4],Lexis-Nexis[5]及Verity[6], 除了業界外, 國內外學術上的研究也有很多,如[7][8][9][10]等, 這些都是希望找到一個比較好的方法可以讓使用者在檢索上有一致的使用者介面或是得到更正確更完整的訊息,不過這些系統都缺乏擴充性。所以本論文的目的是要整合各種不同的搜尋引擎, 設計一個異質性的(Hetrogeneous)搜尋引擎代理人(agent), 透過這個代理人, 使用者可以很容易而且具有單一介面的使用各種不同的檢索系統, 不需因不同的搜尋引擎有不同介面而產生困擾。 而我們將利用OMG所制定的CORBA[11]架構來整合這些系統, 其主要的考量是CORBA已儼然成為工業標準, 而且由CORBA的發展我們可以發現, CORBA不但透過IIOP來整合自已的差異(不同廠商的不同的ORB), 亦透過IIOP來整合不同的分散式物件導向計算環境, 因此在分散式平台中都可以透過CORBA順利的達到整合的目的, 將此技術應用在異質全文檢索引擎代理人的發展, 也替檢索系統保留了發展的空間。
在前我們已經說明了利用CORBA架構來製作異質性搜尋引擎之主要原因是因為CORBA架構已漸漸成為工業標準﹐而這個標準目前還在成長之中﹐並且我們從CORBA 2.0的標準中可以發現﹐CORBA的包容性相當高﹐他不但支援分散式物件的計算環境﹐ 並且可以在不同ORB的環境中利用IIOP的技術達到Interoperability﹔另外OMG亦制定了CORBA到DCOM及CORBA到DCE的Interoperability標準﹐在此我們可以預見的是CORBA亦可能制定CORBA到JAVA Bean的Interoperability﹐如圖一如示。 因此以CORBA為分散式物件導向計算環境的骨幹應是未來的趨勢﹐因此如果我們以CORBA為異質性全文檢索引擎之平台﹐則未來在各種分散式環境下的全文檢索服務系統都可以很容易的透過我們的異質性搜尋引擎代理人來達到檢索的目的。這也是我們以CORBA架構來設計的原因之一。 在圖一顯示我們所要完成的異質性搜尋引擎代理人的架構圖﹐在此架構中可以有各種不同的Search Engine﹐在本論文中我們初步是針對Yahoo及AltaVista這二個系統來測試,不過正如我們前面所提,CORBA架構的擴充性很高,因此我們很容易擴充到其他的系統上。
本架構分成下列三個部份:
接著我們說明此系統研究的步驟如下:
2.1 ISS介面之制定
由於在那些介面的異同點中,部份屬性具有同質性,但也有些部份是完全不同的,我們為了訂定一個共同的ISS,因此必需整合所有的介面,根據我們的詳細的分析後,可以整合如下幾點:
如此便將大部份的搜尋引擎介面都囊括了,而且有系統的整理出來。另外還要制定operation,我們必需透過一個operation來invoke搜尋引擎提供的服務,它根據那些attribute來invoke service,並且這個operation必須要有傳回的參數,以可傳回搜尋結果。接下來就是實際的制定結果,以IDL表示。
module InternetSearchService
{
struct Result
{
string Title;
string URL;
string Description;
string Date;
float weight;
};
struct Keyword
{
char Inclu_Exclu;
string item;
};
interface ResultCollection
{
readonly attribute long No_Result;
Result retrieve_element_at(in long where);
};
interface Search
{
attribute string Domain;
attribute long Tag;
attribute string Date;
attribute long Near;
attribute long DispNum;
attribute long Area;
attribute boolean DataBase;
readonly attribute long No_Keyword;
boolean AddKeyword(in Keyword add);
boolean RemoveKeyword(in Keyword removed);
Keyword GetKeyword(in long index);
ResultCollection ExcuteSearch();
Boolean AbortSearch();
};
interface SearchFactory
{
Search NewSearch();
};
};
2.2 ISS layer service之產生
在圖二中可以完全的描述如何產生ISS layer service,當然這也是CORBA產生client 程式及server程式的方式。我們是將所訂定出來的ISS的IDL檔經過IDL編譯器產生client stub及server skeleton,然後再撰寫client程式及server程式與IDL所產生的client stub及server skeleton連接,最後產生client程式及server程式。
2.3 WWW環境之系統實作架構
2.3.1 CGI程式之實作
我們的Web Server建置在Sun OS下,搜尋引擎首頁置於http://plato.cis.nctu.edu.tw/CORBA/Search.html,CGI程式以C語言撰寫,將從首頁所接收到的資訊轉存成attribute及keyword set的封包(package)然後透過Socket傳給mediator程式。CGI程式在傳送attribute及keyword set封包完畢後,便等待接收由mediator處理過的搜尋結果,然後再依user的輸出選擇來產生HTML文件,user便可得到結果清單。
2.3.2 Mediator程式之實作
每當有一個CGI要求建立連線,就必須產生一個instance出來替不同的查詢做服務,並且亦要將從各個搜尋引擎所得來的結果做整合處理,如此便須一個仲裁者(mediator)將使用者之檢索屬性及關鍵字組合傳給各個對應搜尋引擎的CORBA client function,並整合所有的結果,再將之傳回給CGI程式。Mediator程式就像deamon一樣平時啟動著,每當接收到一個新的CGI Socket連線,便建立一個新的mediator執行緒(Thread),新的執行緒會等待接收此一新的CGI連線所丟過來的attribute及keyword set封包,當收到設定完成的封包後,分別再產生Yahoo CORBA client function及AltaVista CORBA client function的執行緒以同時發出query string至搜尋引擎,並同時等候結果回傳。而mediator function便等待全部的ISS CORBA client function皆執行完畢後(即結果收集完成)方處理後續動作,上述功能是由兩層的多執行緒(multithread)技巧來達成。
本系統為保留本身的擴充性的和其他系統的相互操作性(Interoperability),我們使用CORBA為執行的軟體平台,這是其他系統所沒有的。我們也根據CORBA的COSS規格,訂定了ISS,期待未來可以成為CORBA上的一個標準。此外,本系統的一個特點便是為不同的搜尋引擎實作個別的CORBA Agent Object,使其成為一個個的Component,我們提供了多個具有相同介面的搜尋引擎代理人元件,基植於此我們提供了最大的彈性給client端做多樣化的組合。目前已有多個MetaSearch的演算法[18]使用在MetaSearch的搜尋引擎上,client端可依這些或自訂的演算法來動態選擇一組最佳化的搜尋引擎,提升效率性及精確度。甚至可以加上knowledge Base使其具有個人化功能,更服合使用者的行為及需求。最後,由於此一ISS介面已囊括絕大部份的搜尋語法,所以不僅可適用在搜尋引擎上,甚至可用於房屋仲介、數位圖書館搜尋等使其成為異質性檢索系統代理人,只是實作不同的物件而已,而操作介面不變,這一點是本系統的最大特色。也由於訂出ISS介面,我們可已將其用於其它的物件模組技術,如COM、JavaBeans等,提供實作者最大的彈性。
[1] Michael Schwartz et al., WWW Home Pages Harvest Broker. http://town.hall.org/Harvest/broker/www-home-pages/.
[2] IBM, Inc. Query By Images Content Home Page. http://wwwqbic.almaden.ibm.com/~qbic/qbic.html.
[3] Brandon Plewe, The Virtual Tourist Home Page. http://wings.buffalo.edu/world.
[4] Personal Library Software, Ine. Personal Library Software Home Page. http://www.pls.com.
[5] LEXIS-NEXIS. LEXIS-NEXIS Communication Center. http://www.lexis-nexis.com.
[6] Verity, Inc. Verity Home Page. http://www.verity.com
[7] Chia-Hui Chang and Ching-Chi Hsu, "Customizable Multi-engine Search Tool with Clustering", Proceeding of the sixth international world wide web conference'97,Santa Clara, California, USA, April 1997, pp.257-264.
[8] Massimo Marchiori, "The quest for Correct Information on the Web: Hyper Search Engineers", Proceeding of the sixth international world wide web conference'97,Santa Clara, California, USA, April 1997, pp.265-276.
[9] Daniel Dreilinger," Integrating Heterogeneous WWW Search Engines", May 1995. ftp://132.239.54.5/savvy/report.ps.gz.
[10] E. Selberg, O. Etzioni," Multi-Engines Search and Comparison Using the MetaCrawler", proceeding of the Fourth World Wide Web Conference'95, Boston USA. Dec 1995.
[11] Object Management Group, Inc. The Common Object request Broker(CORBA): Architecture and Specification, v2.0, November 1995.
[12] Object Management Group, Inc. CORBA services: Common Object Services Specification, OMG Document Number 95-3-31, March 31, 1995.
[13] Deron Liang, Winston Lo, and Shyan-Ming Yuan "Introduction to CORBA 2.0 Specification and its Future Trends" in Proc. of 1996 Workshop on Distributed System Technology and Applications, pp. 3-10, Taipei, Taiwan, May 1996.
[14] Deron Liang, S.C. Chou, and Shyan-Ming Yuan, "Adding Fault-Tolerant Object Services to CORBA" ,in Proc. of the 1996 International Workshop on Dependability in Advanced Computing Paradigms (DACP-96), Ibaraki, Japan, June, 1996.
[15] Yue-Shan Chang, Yu-Ming Kao, Shyan-Ming Yuan, and Deron Liang, 1996, "An Object Transaction Service based on CORBA Architecture", in Proc. of 1996 IFIP/IEEE Int'l Conf. on Distributed Platforms, (Dresden, Germany), Feb.
[16] Kai-Chih Liang, Shyan-Ming Yuan, Deron Liang, and Winston Lo. "Nested Transaction and Concurrency Control Services on CORBA", in Proc. Of Joint International Conference on Open Distributed Processing (ICODP) and Distributed Platforms (ICDP), 27-30 May 1997 Toronto, Ontario, Canada. (zipped postscript version is here)
[17] Guang-Way Sheu, Yue-Shan Chang, Deron Liang, Shyan-Ming Yuan, Winson Lo. "A Fault-Tolerant object service on CORBA" to apear in ICDCS 97
[18] Daniel Dreilinger, Adele E. Howe, "Experiences with Selecting Search Engines Using Metasearch", in ACM Transaction on Information System, Vol.15, No.3, July 1997, Pages 195-222. http://www.microsoft.com/webdev/