號碼百事通系統是一個涉及多種電信信息資源、復雜業務關系的數據挖掘和信息服務支撐系統。其中坐席搜索功能是號百平臺滿足客戶需求的接口,主要負責配合工作人員高效、精確的查詢出客戶所需資料并反饋;直接影響著客戶感受和滿意度。
號百平臺基本搜索功能,主要通過具體的條件需求從現擁有的索引文件中提取出相應內容,后反查于數據庫文件以顯示詳細信息;并要求保證易操作,高速,高效,高精準度。號百搜索引擎系統采用全文搜索引擎,它擁有自己的檢索程序,自動從客戶信息平臺提取各種公開的信息(以文字為主),建立起標簽和索引文件,搜索結果直接從自身的索引文件中調用,能檢索與用戶查詢條件相匹配或相關的記錄,按一定的排序規則返回結果(搜索條件符合度優先)。按字和按詞是全文檢索的兩種主要方法。按字檢索是指將各詞組分開,給文中的每個字都分別建立獨立檢索。而各個語言不同,每個字的含義也不一樣,就像英文里邊的字其實就是詞,但是中文里的字和詞卻是分開的,并且意思差別很大。按詞檢索則是針對文中的各詞,建立詞義單位的索引,檢索時按詞檢索,并且可以處理同義項等。
號百搜索引擎的索引是以客戶為中心,以客戶基本屬性和碼號建立的索引,用戶可以在這兩方面進行雙向查詢;同時隨著號百客戶信息深度的增大(包括新增行業及其擴展信息),若這些擴展的信息不能在語音搜素引擎中使用,給電信帶來很大的損失。為此,我們將在基礎信息中擴展的部分也建立若干文檔和索引的對應關系,在新建的文檔索引和客戶基本信息屬性索引在相互間也存在對應關系,這樣的設計能夠帶來擴展信息單獨能夠搜索,擴展信息可以和客戶信息聯合查詢。
1 Lucene簡介
Lucene是apache軟件基金會 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。
作為一個開放源代碼項目,Lucene從問世之后,引發了開放源代碼社群的巨大反響,程序員們不僅使用它構建具體的全文檢索應用,而且將之集成到各種系統軟件中去,以及構建Web應用,甚至某些商業軟件也采用了Lucene作為其內部全文檢索子系統的核心。apache軟件基金會的網站使用了Lucene作為全文檢索的引擎,IBM的開源軟件eclipse的2.1版本中也采用了Lucene作為幫助子系統的全文索引引擎,相應的IBM的商業軟件Web Sphere中也采用了Lucene。Lucene以其開放源代碼的特性、優異的索引結構、良好的系統架構獲得了越來越多的應用。
Lucene作為一個全文檢索引擎,其具有如下突出的優點。
(1)索引文件格式獨立于應用平臺。Lucene定義了一套以8位字節為基礎的索引文件格式,使得兼容系統或者不同平臺的應用能夠共享建立的索引文件。
(2)在傳統全文檢索引擎的倒排索引的基礎上,實現了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達到優化的目的。
(3)優秀的面向對象的系統架構,使得對于Lucene擴展的學習難度降低,方便擴充新功能。
(4)設計了獨立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創立,用戶擴展新的語言和文件格式,只需要實現文本分析的接口。
(5)已經默認實現了一套強大的查詢引擎,用戶無需自己編寫代碼即使系統可獲得強大的查詢能力,Lucene的查詢實現中默認實現了布爾操作、模糊查詢(Fuzzy Search)、分組查詢等等。
面對已經存在的商業全文檢索引擎,Lucene也具有相當的優勢。首先,它的開發源代碼發行方式(遵守Apache Software License),在此基礎上程序員不僅僅可以充分的利用Lucene所提供的強大功能,而且可以深入細致的學習到全文檢索引擎制作技術和面相對象編程的實踐,進而在此基礎上根據應用的實際情況編寫出更好的更適合當前應用的全文檢索引擎。在這一點上,商業軟件的靈活性遠遠不及Lucene。其次,Lucene秉承了開放源代碼一貫的架構優良的優勢,設計了一個合理而極具擴充能力的面向對象架構,程序員可以在Lucene的基礎上擴充各種功能,比如擴充中文處理能力,從文本擴充到HTML、PDF等文本格式的處理,編寫這些擴展的功能不僅僅不復雜,而且由于Lucene恰當合理的對系統設備做了程序上的抽象,擴展的功能也能輕易的達到跨平臺的能力。最后,轉移到apache軟件基金會后,借助于apache軟件基金會的網絡平臺,程序員可以方便的和開發者、其它程序員交流,促成資源的共享,甚至直接獲得已經編寫完備的擴充功能。最后,雖然Lucene使用Java語言寫成,但是開放源代碼社區的程序員正在不懈的將之使用各種傳統語言實現(例如.net framework),在遵守Lucene索引文件格式的基礎上,使得Lucene能夠運行在各種各樣的平臺上,系統管理員可以根據當前的平臺適合的語言來合理的選擇。
2 Lucene應用
在號百座席系統中,由于搜索的信息深度加深,涉及的搜索范圍加大,因此,為了更準確、全面的查詢信息,我們利用Lucene搜索引擎將基礎信息建立文檔和索引的對應關系,同時將深度信息也建立若干文檔和索引的對應關系,這樣設計就能夠將客戶信息、行業信息、行業附屬信息聯合進行查詢。
使用Lucene實現全文檢索,主要有下面三個步驟。
(1)建立索引文件。
根據號百信息庫中的已有的數據資料建立Lucene索引文件。
(2)在索引文件中搜索。
當用戶輸入關鍵詞搜索后,分解搜索請求,由搜索系統程序從索引文件中找到符合該關鍵詞的所有信息。
(3)對搜索結果進行處理排序。
搜索過程:用戶呼叫118114,提供需要查詢的內容條件,工作人員使用搜索服務,通過用戶提出的查詢條件從索引文件中提取出相對應的索引內容,后通過索引內容在數據庫資料文件中查詢出相對應的詳細信息,反饋給用戶。
在號百座席系統中主要涉及的搜索方式主要有以下幾類:
(1)基本搜索方式。
基礎搜索方式主要是針對客戶信息和碼號信息雙向關聯查詢。坐席提供以下基本搜索方式。
建立客戶名稱、客戶地址、客戶行業、行業擴展信息、客戶簡拼、客戶號碼、舊號碼等信息建立索引,搜索查詢時使用這些關鍵字進行搜索查詢。
(2)增強搜索方式。
號百系統的數據范圍大大提高,那需要查詢的范圍也大大提高,所以,以往那種單靠客戶基礎信息和碼號信息雙向關聯查詢的方式不能滿足用戶的需要,用戶可能就想知道今天有哪些打折菜,有哪些電影上映等信息,這些跟客戶信息和碼號信息無關,以往建立客戶信息和碼號信息雙向關聯的索引建立方式失去了用戶新的需求,所以在更大范圍、在每個方面建立索引,就可以在這個方面進行查詢,在方面間的組合、聯合查詢可以使用一個方面的主