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