1 概述
隨著移動互聯網的出現和發展,海量動態數據的出現使得搜索引擎具有了很大的市場空間.移動終端軟硬件技術的發展迅速,移動終端中存儲的數據種類和數量以及終端 CPU 的計算能力都在不斷增強,因此,研究移動終端上用戶快速準確搜索數據將是未來的一個熱點.
主流的搜索算法包括回溯算法、深度搜索與廣度搜索、A* 算法[1,2].然而這些算法都比較舊,不適應于現時的大數據搜索問題.Lucene[3-5]是 apache 軟件基金會中的一個源代碼開放的全文檢索引擎工具包子項目,它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了一個完整的查詢引擎和索引引擎,以及文本分析引擎的一部分\\(包括英文與德文兩種西方語言\\).作為一個開源項目,Lucene 出現后,開源社區引發了巨大的反響,也逐漸成為研究的重點.雖然 Lucene 有上述提到的多種優點,但對于移動終端而言,它具有一定的局限性.Lucene的源代碼是用 JAVA 編譯的,可移植性相對較差;由于Lucene 是建立在 PC 終端上的,它的搜索大而全面,但如果移植到移動終端上,會導致代碼效率低下,速度不能滿足用戶需要.因此,本文的目標就是重新設計一個新的搜索引擎體系.
2 索引策略設計
對于本文設計的搜索引擎,索引策略主要是批量索引與增量索引相結合,批量索引是通過 SQL 數據庫的事務功能,把先緩存于內存里的索引一次性寫入外存,主要運用在初始化的時候,而增量索引就是不緩存索引項直接存入外存里,一般運用在有新的索引加入或者是一兩條的索引更變上.
下面介紹一下批量索引的索引策略:我們會設定一個閾值,這個可以根據移動終端的一個硬件條件來設計,然后當緩存的索引項的數量達到了閾值后,就一次性存入外存里,同時,我們會設定一個時間限制,即使索引項數量沒有達到閾值,但如果時間已經超過了我們所設定的限制后,也會存入外存,這樣子既可以節省了資源的消耗,有能保證索引建立的效率.
索引策略的總體流程圖如圖 1.
3 索引策略設計
設計的引擎的查詢策略主要為按匹配模式分階段返回與定量分階段返回相結合的模式.匹配模式分階段返回的意思是,按照精確匹配模式和前綴匹配模式來分階段的返回,精確匹配模式就是查找跟查詢語句一模一樣的關鍵字,而前綴匹配模式就是查找以查詢語句為前綴的關鍵字.
定量分階段返回的意思是,設定一個閾值,當搜索的結果超過這個閾值的時候,就返回一次結果.這樣做的好處是,例如有些關鍵字的結果很多,如果需要等它所有結果都查找出來在一次返回,那樣子會有兩個缺點,一是可能需要等待一段時間,二是一次返回的結果太多,造成閱讀不方便,而當使用定量分階段返回以后,例如設定了一個閾值為 10,那樣當他搜索了 10 個結果以后,就返回一次結果,這樣既可以減少用戶等待的時間,并且用戶一次只需要看 10 個結果,減少了用戶的閱讀量,提升了用戶體驗.搜索引擎的搜索策略大體流程,如下流程圖 2.
4 結束語
在計算機終端上,Lucene 有著優秀的框架架構,但是,移動終端有著它與計算機終端不一樣的硬件特點,因而,Lucene 并不適合用于移動終端上.參照了 Lucene 優良的框架,重新設計了核心的索引策略與搜索策略,使其可以更加適應移動終端的硬件條件,讓搜索引擎在一定的條件下能夠更加有效率的查找用戶需要的信息.