葉文珺,史習(xí)文
(上海電力學(xué)院計(jì)算機(jī)與信息工程學(xué)院,上海 200090)
互聯(lián)網(wǎng)時(shí)代的信息搜索無疑具有很高的實(shí)用價(jià)值,因此誕生了許多搜索引擎,如百度,谷歌等.搜索引擎大大方便了人們對(duì)于信息的查詢效率,同時(shí)也帶來了一些問題,如:不同的搜索引擎得出的結(jié)果可能存在差異;不同的搜索引擎的功能各不相同.
優(yōu)搜(USou)是一款自主設(shè)計(jì)的共享軟件,是一個(gè)整合式的搜索工具.其使用方法簡(jiǎn)單,具備智能的信息分析、挑選搜索引擎及反饋結(jié)果的功能,具有可擴(kuò)展性,并能在其平臺(tái)上不斷增加新的搜索功能.
優(yōu)搜采用組件架構(gòu)[1],在優(yōu)搜平臺(tái)上向插件提供服務(wù).優(yōu)搜的所有功能都是基于其松散的組件架構(gòu),安裝一種新的組件可以使優(yōu)搜提供新的服務(wù)接口,由插件訪問新的組件接口[2],從而產(chǎn)生新的功能.
整款系統(tǒng)由包含界面的主程序、各種組件和組件管理器組成,其功能由插件來實(shí)現(xiàn),優(yōu)搜的整體架構(gòu)如圖1所示.其中,優(yōu)搜主程序是優(yōu)搜的界面,并不是一個(gè)組件,它通過訪問服務(wù)管理來對(duì)4個(gè)組件進(jìn)行全局性操控.
優(yōu)搜的架構(gòu)設(shè)計(jì)模仿了Office的開放對(duì)象訪問機(jī)制,每一個(gè)組件在使用此架構(gòu)時(shí),都有一個(gè)根容器和各個(gè)服務(wù)容器構(gòu)成的服務(wù)容器樹.每一個(gè)節(jié)點(diǎn)的服務(wù)都可以一直向上傳遞,直到根部,而每一個(gè)節(jié)點(diǎn)請(qǐng)求服務(wù)時(shí),都可以從根節(jié)點(diǎn)獲得.因此,根節(jié)點(diǎn)匯總了所有可提供的服務(wù),當(dāng)某個(gè)對(duì)象要請(qǐng)求服務(wù)時(shí),只需向根節(jié)點(diǎn)發(fā)送信息即可.
上面涉及的所有服務(wù)都是通過服務(wù)管理組件的DLL來進(jìn)行管理的,服務(wù)管理是優(yōu)搜組件式架構(gòu)的核心,也是所有組件訪問另一個(gè)組件的橋梁.通過該模塊,一個(gè)組件可以訪問另一個(gè)組件的功能,而不需要知道該組件應(yīng)該加載哪個(gè)文件,這使得各個(gè)組件之間成為一個(gè)松散的架構(gòu).也就是說,任意一個(gè)組件、功能性插件或主程序只需要知道其所要訪問的另一個(gè)組件的接口,就可以通過服務(wù)管理來查詢并訪問到相應(yīng)功能.所有組件都包含著服務(wù)管理器接口,可以通過它得到其他組件的接口,這樣就可以通過一個(gè)組件操作其他的組件或與之進(jìn)行通訊了.

圖1 優(yōu)搜整體架構(gòu)
優(yōu)搜各組件功能如下.
(1)捕獲代理服務(wù)提供單詞捕獲功能的支持,用于捕獲用戶鼠標(biāo)上的關(guān)鍵字.若沒有安裝該組件,則優(yōu)搜只能通過手動(dòng)搜索,而不支持即指即搜功能.
(2)插件服務(wù)向優(yōu)搜提供插件式搜索服務(wù)支持,所能提供的服務(wù)包括讀取自定義配置文件,獲得指定插件接口,以及獲得所有插件名稱列表等.若沒有安裝該組件,則優(yōu)搜將無法支持插件,從而導(dǎo)致系統(tǒng)無法進(jìn)行插件式搜索.
(3)搜索引擎服務(wù)提供對(duì)于上述兩款組件的控制使用功能.該組件包含智能分析模塊,用于搜索引擎的排序和用戶選擇結(jié)果的反饋支持.通過訪問該組件,優(yōu)搜主程序可以下達(dá)搜索執(zhí)行命令、插件選擇命令等.
(4)應(yīng)用設(shè)置服務(wù)提供主程序設(shè)置值的讀取支持,向優(yōu)搜其他組件提供程序配置信息.通過該服務(wù),可以讀取用戶設(shè)定的程序參數(shù),并調(diào)整其他服務(wù)的參數(shù).
為了根據(jù)用戶搜索的關(guān)鍵字選擇更好的搜索引擎結(jié)果,需要一個(gè)良好的插件排序機(jī)制.排序服務(wù)推薦的插件排序是依據(jù)其他用戶使用結(jié)果而得出的,根據(jù)每個(gè)插件的得分高低對(duì)其進(jìn)行排序,并給出建議.其中,插件得分的高低是由其他用戶以前搜索該關(guān)鍵字的頻率所決定的.
優(yōu)搜支持兩種排序算法,即:基本排序算法和使用RankService的排序算法.
基本排序算法的思路比較簡(jiǎn)單.首先,比較兩個(gè)結(jié)果的類型,結(jié)果類型的大小為枚舉值類型的大小;其次,當(dāng)兩個(gè)結(jié)果類型相同時(shí),就比較其用戶排序值,用戶排序值保存在一個(gè)變量里,用戶可以進(jìn)行手動(dòng)設(shè)置.
優(yōu)搜使用了一個(gè)反饋—學(xué)習(xí)—推薦的機(jī)制,通過其他用戶搜索關(guān)鍵字的反饋情況來給插件打分,并在其他用戶搜索這個(gè)關(guān)鍵字時(shí)給出較好的排序結(jié)果.
RankService根據(jù)其他用戶之前使用該關(guān)鍵字的體驗(yàn)結(jié)果,采用頁面分析技術(shù)[3]對(duì)搜索引擎進(jìn)行該關(guān)鍵字排名.隨著用戶結(jié)果反饋的增加,以及服務(wù)器的不斷學(xué)習(xí),使得服務(wù)器可以得出更為精確的結(jié)果建議.
該排序算法使用RankService來查詢服務(wù)器推薦插件,并將服務(wù)器的推薦列入排序考慮的范圍.可以將搜索結(jié)果分為如下4種情況:
(1)單一結(jié)果且為強(qiáng)匹配如關(guān)鍵字為手機(jī)號(hào)碼時(shí),搜索結(jié)果為該手機(jī)號(hào)碼的所屬城市等信息;
(2)單一結(jié)果且為正常匹配這種單一結(jié)果的匹配稱為正常單一匹配,如關(guān)鍵字為任意英語單詞時(shí),程序無法確切地判斷出用戶是要搜索其翻譯,還是搜索有關(guān)這個(gè)單詞的其他信息,因此搜索結(jié)果為該英語單詞的解釋;
(3)集合式結(jié)果如關(guān)鍵字為任意文字時(shí),搜索結(jié)果為與該關(guān)鍵字有關(guān)的鏈接;
(4)無匹配無法找到該關(guān)鍵字的結(jié)果時(shí)為無匹配.
4 種情況都含有一個(gè)值,其大小表示當(dāng)搜索結(jié)果為該情況時(shí)搜索結(jié)果的優(yōu)先級(jí)級(jí)別,值越大,則優(yōu)先級(jí)別越高.
服務(wù)管理是優(yōu)搜組件式架構(gòu)的核心,用于提供各種已配置組件的接口,是一個(gè)組件訪問另一個(gè)組件的中間站.主要包含以下兩個(gè)方面的內(nèi)容.
(1)服務(wù)管理器接口與應(yīng)用服務(wù)應(yīng)用服務(wù)繼承于服務(wù)管理器接口.通過該接口可以安裝新的服務(wù),并儲(chǔ)存服務(wù)接口,使得別的程序通過函數(shù)調(diào)用就可以獲得想要的組件服務(wù),同時(shí)可以通過.NET反射機(jī)制加載組件[4].由于所有要加載的組件信息是與已安裝插件的信息一起保存在自定義配置文件中,因此當(dāng)程序啟動(dòng)時(shí),優(yōu)搜主程序?qū)⒆x入這個(gè)配置列表,并根據(jù)配置列表加載所有組件.
(2)儲(chǔ)存插件信息的類PluginInfo與Resported Result在服務(wù)管理組件中,PluginInfo是一個(gè)非常重要的類,它存儲(chǔ)了有關(guān)某項(xiàng)插件的所有信息.ResportedResult類定義了當(dāng)前搜索中搜索結(jié)果的類型,若為集合式結(jié)果,則還保存了結(jié)果中所有的鏈接.
優(yōu)搜具有廣闊的發(fā)展前景.例如,可以在優(yōu)搜的平臺(tái)上為用戶開發(fā)出新的插件,同時(shí)還可以開發(fā)優(yōu)搜增值插件,為用戶提供消費(fèi)品和推薦服務(wù),并從這些企業(yè)收取適當(dāng)?shù)馁M(fèi)用,實(shí)現(xiàn)優(yōu)搜的商業(yè)價(jià)值.另外,可以對(duì)優(yōu)搜進(jìn)一步開發(fā),產(chǎn)生更多的優(yōu)搜衍生品,如優(yōu)搜門戶等.
[1]ERICH Gamma.Design patterns-elements of reusable objectoriented software[M].北京:清華大學(xué)出版社,2005:351-377.
[2]CHRISTIAN Nagel.C#高級(jí)編程[M].第6版.北京:清華大學(xué)出版社,2008:1 124-1 142.
[3]周靜.ASP和ASP.NET頁面間的數(shù)據(jù)傳遞方式探索[J].微計(jì)算機(jī)信息,2006(3-5):114-115.
[4]KRZYSZTOF Cwalina..NET設(shè)計(jì)規(guī)范[M].第2版.北京:人民郵電出版社,2010:244-305.
(編輯白林雪)