衡量搜尋引擎系統功能質量方面有2大指標,查詢率、查準率。效能方面從吞吐率、響應時間、系統資源消耗等多方面綜合考慮。搜尋引擎應用參與運作的角色劃分:分發請求/合併查詢結果的merger,以及查詢服務的searcher.
搜尋引擎系統部署可以劃分為: 1) 1 個merger 帶n個searcher ,searcher上資料一樣 (分布式單個集群多台機器) ,n>=1且為整數 2) 1個機器 同時充當merger以及searcher (單機版) 3) 為避免2)單點故障,幾台機器同時為merger/searcher,機器的資料一樣。 4) m 個分布式單個集群多台機器組成 1個大型的分布式多集群多機器的複雜環境 實踐中3)、4) 2種部署模式都是存在的。 大資料量、高吞吐率的都採用4),避免單點故障小型的資料採用3) ,節約成本。
單機上搜尋引擎的模組劃分一般有: ? 索引模組:為海量資料(資料庫匯出的檔案資料) 建立索引檔案 (依照一定資料結構格式儲存為二進位制檔案) ? 查詢模組:接收http請求,查詢本機硬碟上的索引檔案,返回文件id以及第二次查詢時返回具體的內容 ? 即時更新模組:加入新的資料,可以從0開始重新建索引,也可以在原有基礎上增加索引。 ? 分布式模組:merger/searcher 多台機器的網路通訊。 ? cache模組:這裡可以做查詢請求的快取,也可以做查詢結果的快取,但快取後者的話,將極大消耗系統記憶體。 ? 其他管理模組 ? 外部介面 基於如上覆雜的系統架構,尤其是4)模式,我們在測試當中也碰到相當多棘手的技術問題 1) 海量資料是否都按預期的分詞演算法建立索引了呢? 2) 機器分詞的效果與手工分詞相差有多大呢? 3) 海量查詢的返回結果是否多查了 4) 海量查詢的返回結果是否漏查了 5) 海量查詢的返回結果的加亮、標註如期加了? 6) 海量查詢的返回結果中相關性分數計算是否正確? 7) 海量查詢的返回結果積分計算是否正確了呢 8) 海量查詢的返回結果積分相同時,排序的先後依據唯一麼? 9) 加入即時更新模組後,每次查詢結果都不同,新建的索引內容是否都反饋到查詢結果裡面了呢 ? 10) 海量資料時cache是否預期cache該cache的內容? 11) 海量資料時cache是否依照一定的過時算法令cache的內容失效呢? 12) 應用程式在32位linux 作業系統和64位的linux的索引、查詢結果是否依然一樣? 13) 應用程式在不同的os 上索引、查詢結果是否依然一樣?
我們在實踐中,針對查詢結果正確性有3類方法處理以上問題第一類基於人工肉眼對比,極度耗費腦細胞 1) 少量資料單機測試準確性 2) 少量資料1個集群,搭建1merger 1searcher 測試準確性 3) 少量資料1個集群,搭建1merger 多 searcher 測試準確性 4) 少量資料多個集群,搭建1merger 多 searcher 測試準確性 第二類,經過人工對比確認基本功能無大問題後,開發linux shell指令碼或者loadrunner指令碼比較部署方式不同但測試返回結果理當相同的。這個方法也幫我們發現了一些bug 第三類方法,直接測試大量資料多個集群,搭建1merger 多 searcher 測試準確性。這個時候採用loadrunner施加高峰壓力,抽樣檢查查詢請求的正確性。對於分詞結果、相關性的結果,有人可能建立另外按照同樣的演算法以及輸出格式,由2個不同的開發工程師實現,再對比同樣的資料分詞、相關性是否相同。在專案開發時間從容的情況下,可以考慮這麼做的,但現實中有幾個專案時間從裕?呵呵,我沒有這麼好運氣遇上。針對搜尋引擎測試的困難,歡迎各位各抒己見
搜尋引擎測試指南
衡量搜尋引擎系統功能質量方面有2大指標,查詢率 查準率。效能方面從吞吐率 響應時間 系統資源消耗等多方面綜合考慮。搜尋引擎應用參與運作的角色劃分 分發請求 合併查詢結果的merger,以及查詢服務的searcher.搜尋引擎系統部署可以劃分為 1 1 個merger 帶n個searcher sear...
搜尋引擎測試指南
衡量搜尋引擎系統功能質量方面有2大指標,查詢率 查準率。效能方面從吞吐率 響應時間 系統資源消耗等多方面綜合考慮。搜尋引擎應用參與運作的角色劃分 分發請求 合併查詢結果的merger,以及查詢服務的searcher.搜尋引擎系統部署可以劃分為 1 1 個merger 帶n個searcher sear...
搜尋引擎 索引
正排索引 文件編號,單詞編號,單詞的數量,單詞出現的位置。倒排索引 1,單詞詞典,儲存單詞以及統計資訊,單詞在記錄表中的便宜,可常駐記憶體,用雜湊表儲存。2,記錄表,單詞對應的文件集合,記錄單詞出現的數目 位置。文件採用差分變長編碼。其中文件可按編號公升序排列 可利用差分編碼 也可按出現次數排列,可...