本申請(qǐng)涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種終端數(shù)據(jù)搜索的實(shí)現(xiàn)方法和裝置。
背景技術(shù):
隨著移動(dòng)互聯(lián)的發(fā)展和智能終端的普及,app(應(yīng)用程序)成為用戶獲取信息、通過網(wǎng)絡(luò)完成各種事項(xiàng)的重要入口。一些綜合性的app中包括多個(gè)業(yè)務(wù)功能單元,實(shí)現(xiàn)了與網(wǎng)絡(luò)側(cè)多種業(yè)務(wù)系統(tǒng)的對(duì)接,使得用戶可以通過該app使用所有這些業(yè)務(wù)系統(tǒng)提供的服務(wù)。
隨著用戶對(duì)各種業(yè)務(wù)功能組件的使用,終端上app內(nèi)的數(shù)據(jù)會(huì)逐漸增多,用戶自行手動(dòng)尋找需要的信息會(huì)變得越來越困難,因此一些app提供了搜索引擎,為用戶提供在本終端的app內(nèi)進(jìn)行數(shù)據(jù)搜索的功能。在進(jìn)行這種綜合性app內(nèi)的搜索時(shí),需要從不同的業(yè)務(wù)功能單元獲得業(yè)務(wù)數(shù)據(jù)。通常大部分業(yè)務(wù)數(shù)據(jù)由每個(gè)業(yè)務(wù)功能單元分別管理和維護(hù),一些應(yīng)用場(chǎng)景中也有少部分業(yè)務(wù)數(shù)據(jù)由多個(gè)業(yè)務(wù)功能單元共用。對(duì)這些業(yè)務(wù)數(shù)據(jù)的搜索一般要通過業(yè)務(wù)功能單元來進(jìn)行。
現(xiàn)有技術(shù)中,app內(nèi)的搜索引擎在收到用戶的搜索字符串后,將搜索字符串發(fā)送給作為搜索對(duì)象的業(yè)務(wù)功能單元,由業(yè)務(wù)功能單元自行按照搜索字符串進(jìn)行內(nèi)容搜索,并將搜索結(jié)果返回給搜索引擎。這種實(shí)現(xiàn)方式,每個(gè)業(yè)務(wù)功能單元都要實(shí)現(xiàn)對(duì)自身業(yè)務(wù)數(shù)據(jù)的搜索,增加了業(yè)務(wù)功能單元在接入搜索引擎時(shí)的工作量;另外,業(yè)務(wù)功能單元采用的搜索方式不同,導(dǎo)致返回搜索結(jié)果的召回率和準(zhǔn)確率有所差別,給用戶確定搜索字符串增加了困難。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)?zhí)峁┮环N終端數(shù)據(jù)搜索的實(shí)現(xiàn)方法,應(yīng)用于搜索引擎,包括:
在滿足設(shè)定條件時(shí),根據(jù)從數(shù)據(jù)管理方獲取的可搜索數(shù)據(jù)項(xiàng)的描述生成索引,所述數(shù)據(jù)項(xiàng)描述中包括所述數(shù)據(jù)管理方每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);
根據(jù)來自用戶搜索請(qǐng)求中的搜索字符串,在索引中查找與所述搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí);
采用所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)從數(shù)據(jù)管理方獲取對(duì)應(yīng)的數(shù)據(jù)項(xiàng);基于獲取的數(shù)據(jù)項(xiàng)向用戶生成結(jié)果。
本申請(qǐng)?zhí)峁┑囊环N終端數(shù)據(jù)搜索的實(shí)現(xiàn)方法,應(yīng)用于數(shù)據(jù)管理方,包括:
根據(jù)搜索引擎獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,其中包括每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);
根據(jù)搜索引擎攜帶有數(shù)據(jù)項(xiàng)標(biāo)識(shí)的獲取數(shù)據(jù)項(xiàng)的請(qǐng)求,將對(duì)應(yīng)于所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)的數(shù)據(jù)項(xiàng)返回給搜索引擎。
本申請(qǐng)還提供了一種終端數(shù)據(jù)搜索的實(shí)現(xiàn)裝置,應(yīng)用于搜索引擎,包括:
索引生成單元,用于在滿足設(shè)定條件時(shí),根據(jù)從數(shù)據(jù)管理方獲取的可搜索數(shù)據(jù)項(xiàng)的描述生成索引,所述數(shù)據(jù)項(xiàng)描述中包括所述數(shù)據(jù)管理方每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);
索引查找單元,用于根據(jù)來自用戶搜索請(qǐng)求中的搜索字符串,在索引中查找與所述搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí);
搜索結(jié)果單元,用于采用所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)從數(shù)據(jù)管理方獲取對(duì)應(yīng)的數(shù)據(jù)項(xiàng);基于獲取的數(shù)據(jù)項(xiàng)生成搜索結(jié)果。
本申請(qǐng)?zhí)峁┑囊环N終端數(shù)據(jù)搜索的實(shí)現(xiàn)裝置,應(yīng)用于數(shù)據(jù)管理方,包括:
數(shù)據(jù)項(xiàng)描述提供單元,用于根據(jù)搜索引擎獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,其中包括每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);
數(shù)據(jù)項(xiàng)提供單元,用于根據(jù)搜索引擎攜帶有數(shù)據(jù)項(xiàng)標(biāo)識(shí)的獲取數(shù)據(jù)項(xiàng)的 請(qǐng)求,將對(duì)應(yīng)于所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)的數(shù)據(jù)項(xiàng)返回給搜索引擎。
由以上技術(shù)方案可見,本申請(qǐng)的實(shí)施例中,搜索引擎從數(shù)據(jù)管理方獲取數(shù)據(jù)項(xiàng)描述,生成索引,在搜索時(shí)通過索引中與用戶的搜索字符串相匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí),從數(shù)據(jù)管理方得到對(duì)應(yīng)的數(shù)據(jù)項(xiàng),使得搜索過程在搜索引擎上統(tǒng)一實(shí)現(xiàn),具有統(tǒng)一的召回率和準(zhǔn)確率,為用戶選擇搜索字符串提供了便利;同時(shí)避免了在數(shù)據(jù)管理方分別實(shí)現(xiàn)搜索導(dǎo)致的重復(fù)工作。
附圖說明
圖1是本申請(qǐng)實(shí)施例中一種應(yīng)用于搜索引擎,數(shù)據(jù)搜索的實(shí)現(xiàn)方法的流程圖;
圖2是本申請(qǐng)實(shí)施例中一種應(yīng)用于數(shù)據(jù)管理方,數(shù)據(jù)搜索的實(shí)現(xiàn)方法的流程圖;
圖3是本申請(qǐng)應(yīng)用示例一中,用戶、搜索引擎與數(shù)據(jù)管理方之間的交互關(guān)系示意圖;
圖4是本申請(qǐng)應(yīng)用示例二中,用戶、搜索引擎與數(shù)據(jù)管理方之間的交互關(guān)系示意圖;
圖5是終端的一種硬件結(jié)構(gòu)圖;
圖6是本申請(qǐng)實(shí)施例中一種應(yīng)用于搜索引擎,數(shù)據(jù)搜索的實(shí)現(xiàn)裝置的邏輯結(jié)構(gòu)圖;
圖7是本申請(qǐng)實(shí)施例中一種應(yīng)用于數(shù)據(jù)管理方,數(shù)據(jù)搜索的實(shí)現(xiàn)裝置的邏輯結(jié)構(gòu)圖。
具體實(shí)施方式
本申請(qǐng)的實(shí)施例提出一種新的終端數(shù)據(jù)搜索的實(shí)現(xiàn)方法,每個(gè)數(shù)據(jù)管理方將可搜索數(shù)據(jù)項(xiàng)的描述提供給搜索引擎,供搜索引擎生成索引,與用戶的搜索字符串進(jìn)行匹配,再通過索引中匹配數(shù)據(jù)項(xiàng)的標(biāo)識(shí)從數(shù)據(jù)管理方獲得數(shù)據(jù)項(xiàng),以生成搜索結(jié)果,從而由搜索引擎統(tǒng)一進(jìn)行對(duì)各個(gè)數(shù)據(jù)管理方可搜索 數(shù)據(jù)項(xiàng)的搜索,無需由數(shù)據(jù)管理方自行實(shí)現(xiàn)搜索功能,并且能夠達(dá)到統(tǒng)一的召回率和準(zhǔn)確率,以解決現(xiàn)有技術(shù)中存在的問題。
本申請(qǐng)實(shí)施例應(yīng)用在終端上,由搜索引擎接收用戶的搜索字符串,對(duì)數(shù)據(jù)管理方的數(shù)據(jù)進(jìn)行搜索,并向用戶返回搜索結(jié)果。終端可以是手機(jī)、平板電腦、pc(personalcomputer,個(gè)人電腦)、筆記本等設(shè)備。
本申請(qǐng)的實(shí)施例中,數(shù)據(jù)管理方是終端上對(duì)作為搜索對(duì)象的數(shù)據(jù)具有操作權(quán)限和維護(hù)功能的主體,例如可以是一個(gè)app內(nèi)的業(yè)務(wù)功能單元,也可以是一個(gè)app。數(shù)據(jù)管理方通常包括業(yè)務(wù)組件(用來管理數(shù)據(jù)的功能組件)和存儲(chǔ)組件(用來存儲(chǔ)被搜索數(shù)據(jù)的功能組件,如文件或數(shù)據(jù)庫(kù));在一些應(yīng)用場(chǎng)景中,搜索引擎對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)組件的訪問必須通過數(shù)據(jù)管理方的業(yè)務(wù)組件進(jìn)行,也就是說搜索引擎不能直接訪問數(shù)據(jù)管理方的存儲(chǔ)組件;在另一些應(yīng)用場(chǎng)景中,搜索引擎可以通過數(shù)據(jù)管理方的業(yè)務(wù)組件來訪問存儲(chǔ)組件,也可以直接訪問存儲(chǔ)組件。
搜索引擎可以為一個(gè)到多個(gè)數(shù)據(jù)管理方的數(shù)據(jù)提供搜索服務(wù)。例如,當(dāng)數(shù)據(jù)管理方是一個(gè)到多個(gè)app內(nèi)的業(yè)務(wù)功能單元時(shí),搜索引擎可以是該app內(nèi)的一個(gè)功能單元;當(dāng)數(shù)據(jù)管理方是一個(gè)到多個(gè)app時(shí),搜索引擎可以是在該終端上為多個(gè)app提供搜索服務(wù)的一個(gè)獨(dú)立app。
本申請(qǐng)的實(shí)施例中,數(shù)據(jù)搜索的實(shí)現(xiàn)方法應(yīng)用于搜索引擎的流程如圖1所示,應(yīng)用在數(shù)據(jù)管理方的流程如圖2所示。
在數(shù)據(jù)管理方,步驟210,根據(jù)搜索引擎獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,其中包括每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí)。
數(shù)據(jù)項(xiàng)是匹配于用戶的搜索字符串的數(shù)據(jù)單位,根據(jù)數(shù)據(jù)管理方的具體實(shí)現(xiàn),可以是數(shù)據(jù)庫(kù)表中的一條記錄、或者一個(gè)文件等。數(shù)據(jù)項(xiàng)描述是對(duì)某個(gè)數(shù)據(jù)項(xiàng)的內(nèi)容或?qū)傩缘谋磉_(dá),數(shù)據(jù)管理方可以直接將數(shù)據(jù)項(xiàng)本身作為數(shù)據(jù)項(xiàng)描述(例如文件,在對(duì)文件內(nèi)容的搜索場(chǎng)景中),也可以將數(shù)據(jù)項(xiàng)中的一部分作為數(shù)據(jù)項(xiàng)描述(例如數(shù)據(jù)庫(kù)表記錄中的一到多個(gè)字段),還可以為數(shù)據(jù)項(xiàng)生成數(shù)據(jù)項(xiàng)描述(例如文件的存儲(chǔ)位置)。數(shù)據(jù)項(xiàng)描述中包括數(shù)據(jù)項(xiàng)標(biāo) 識(shí),對(duì)某個(gè)數(shù)據(jù)管理方而言,數(shù)據(jù)項(xiàng)標(biāo)識(shí)唯一的對(duì)應(yīng)于一條可搜索的數(shù)據(jù)項(xiàng),例如,如果數(shù)據(jù)項(xiàng)是數(shù)據(jù)庫(kù)表的記錄,其標(biāo)識(shí)可以是該數(shù)據(jù)庫(kù)表的主鍵;如果數(shù)據(jù)項(xiàng)是文件,其標(biāo)識(shí)可以是該文件包括文件名的存儲(chǔ)路徑??伤阉鲾?shù)據(jù)項(xiàng)是數(shù)據(jù)管理方開放給搜索引擎,可供用戶進(jìn)行搜索的數(shù)據(jù)項(xiàng)。
搜索引擎可以在滿足預(yù)定條件時(shí),向數(shù)據(jù)管理方發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求。預(yù)定條件可以根據(jù)應(yīng)用場(chǎng)景的實(shí)際需求來確定,在一個(gè)例子中,可以由管理員為搜索引擎設(shè)置每個(gè)數(shù)據(jù)管理方的接口,也可以由數(shù)據(jù)管理方主動(dòng)向搜索引擎注冊(cè)其為搜索引擎提供的接口,在搜索引擎收到用戶的搜索請(qǐng)求后,如果搜索引擎還沒有為該搜索請(qǐng)求針對(duì)的數(shù)據(jù)管理方建立索引,則采用設(shè)置或注冊(cè)的接口向?qū)?yīng)的數(shù)據(jù)管理方發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求;在另一個(gè)例子中,可以由數(shù)據(jù)管理方在可搜索的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),向搜索引擎發(fā)送建立索引的通知,搜索引擎在收到通知后,向發(fā)出通知的數(shù)據(jù)管理方發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求。
數(shù)據(jù)管理方在收到搜索引擎獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求后,向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,其中包括每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí)。
在搜索引擎上,步驟210,在滿足設(shè)定條件時(shí),根據(jù)從數(shù)據(jù)管理方獲取的可搜索數(shù)據(jù)項(xiàng)的描述生成索引,數(shù)據(jù)項(xiàng)描述中包括該數(shù)據(jù)管理方每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí)。
如前所述,在滿足設(shè)定條件時(shí),搜索引擎向數(shù)據(jù)管理方請(qǐng)求數(shù)據(jù)項(xiàng)描述。在收到數(shù)據(jù)管理方返回的數(shù)據(jù)項(xiàng)描述后,搜索引擎根據(jù)該數(shù)據(jù)管理方每個(gè)可搜索數(shù)據(jù)項(xiàng)的描述生成索引。
根據(jù)數(shù)據(jù)項(xiàng)描述生成索引的具體方式可以參照現(xiàn)有技術(shù)實(shí)現(xiàn),如單分詞、雙分詞、拼音分詞等等;此外,索引可以采用各種關(guān)鍵詞描述方式,例如中文、英文、部分中文或部分英文、全拼、簡(jiǎn)拼、部分全拼等等;索引也可以各種存儲(chǔ)形式,例如在緩存中建立索引,或者將索引保存在索引文件中等等;本申請(qǐng)的實(shí)施例對(duì)上述均不做限定。
需要說明的是,生成的索引中包括數(shù)據(jù)項(xiàng)標(biāo)識(shí),用來向數(shù)據(jù)項(xiàng)所屬的數(shù) 據(jù)管理方獲取對(duì)應(yīng)的數(shù)據(jù)項(xiàng)。
在搜索引擎上,步驟220,根據(jù)來自用戶搜索請(qǐng)求中的搜索字符串,在索引中查找與該搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí)。
當(dāng)用戶需要進(jìn)行搜索時(shí),在終端上輸入搜索字符串,搜索引擎按照用戶輸入的搜索字符串,在索引中查找該搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí)。
搜索引擎查找索引的方式,可以參照現(xiàn)有技術(shù)實(shí)現(xiàn),不再贅述。
在搜索引擎上,步驟230,采用該數(shù)據(jù)項(xiàng)標(biāo)識(shí)從數(shù)據(jù)管理方獲取對(duì)應(yīng)的數(shù)據(jù)項(xiàng);基于獲取的數(shù)據(jù)項(xiàng)生成搜索結(jié)果。
在數(shù)據(jù)管理方,步驟320,根據(jù)搜索引擎攜帶有數(shù)據(jù)項(xiàng)標(biāo)識(shí)的獲取數(shù)據(jù)項(xiàng)的請(qǐng)求,將對(duì)應(yīng)于該數(shù)據(jù)項(xiàng)標(biāo)識(shí)的數(shù)據(jù)項(xiàng)返回給搜索引擎。
對(duì)在索引中找到的每一個(gè)與用戶的搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí),搜索引擎向該數(shù)據(jù)項(xiàng)標(biāo)識(shí)所屬的數(shù)據(jù)管理方發(fā)送獲取數(shù)據(jù)項(xiàng)的請(qǐng)求,在請(qǐng)求中攜帶要獲取的數(shù)據(jù)項(xiàng)標(biāo)識(shí)。搜索引擎可以在一個(gè)獲取數(shù)據(jù)項(xiàng)請(qǐng)求中攜帶一個(gè)到多個(gè)數(shù)據(jù)項(xiàng)標(biāo)識(shí)。
由于數(shù)據(jù)項(xiàng)標(biāo)識(shí)唯一對(duì)應(yīng)于數(shù)據(jù)管理方的一個(gè)可搜索數(shù)據(jù)項(xiàng),在搜索引擎提供一個(gè)到多個(gè)數(shù)據(jù)項(xiàng)標(biāo)識(shí)后,數(shù)據(jù)管理方可以根據(jù)數(shù)據(jù)項(xiàng)標(biāo)識(shí)找到對(duì)應(yīng)的數(shù)據(jù)項(xiàng),并將該數(shù)據(jù)項(xiàng)或這些數(shù)據(jù)項(xiàng)返回給搜索引擎。
搜索引擎根據(jù)從一個(gè)至多個(gè)數(shù)據(jù)管理方獲取的數(shù)據(jù)項(xiàng)生成搜索結(jié)果,在終端上展示給用戶。根據(jù)數(shù)據(jù)項(xiàng)生成展現(xiàn)給用戶的搜索結(jié)果的方式可以參照現(xiàn)有技術(shù)實(shí)現(xiàn)。
可見,本申請(qǐng)的實(shí)施例中,由數(shù)據(jù)管理方向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,供搜索引擎生成索引,在搜索時(shí)搜索引擎通過索引中與用戶的搜索字符串相匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí),從數(shù)據(jù)管理方得到對(duì)應(yīng)的數(shù)據(jù)項(xiàng)來生成搜索結(jié)果,由搜索引擎統(tǒng)一進(jìn)行對(duì)各個(gè)數(shù)據(jù)管理方可搜索數(shù)據(jù)項(xiàng)的搜索,達(dá)到統(tǒng)一的召回率和準(zhǔn)確率,提升了用戶的搜索體驗(yàn);同時(shí)避免了在數(shù)據(jù)管理方分別實(shí)現(xiàn)搜索導(dǎo)致的工作量,減少了數(shù)據(jù)管理方接入搜索服務(wù)的障礙。
如前所述,搜索引擎可以將索引保存在緩存中,以可以將索引以索引文 件的形式保存。在緩存中實(shí)現(xiàn)的索引具有查詢速度快的優(yōu)點(diǎn),但是當(dāng)接入搜索引擎的數(shù)據(jù)管理方較多或數(shù)據(jù)項(xiàng)較多時(shí),索引占用的緩存容量會(huì)變得過大,而影響到app或終端的性能。以文件形式保存的索引可以在基本不影響查詢效率的情況下,減少對(duì)內(nèi)存的占用。
當(dāng)數(shù)據(jù)管理方的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),該變化可能會(huì)使得搜索引擎所建立的索引不再準(zhǔn)確。為了維護(hù)索引與數(shù)據(jù)項(xiàng)描述的一致性,可以按照變化后的數(shù)據(jù)項(xiàng)描述來對(duì)索引進(jìn)行更新。
在一種實(shí)現(xiàn)方式中,數(shù)據(jù)管理方可以在可搜索的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),向搜索引擎發(fā)送建立索引的通知。搜索引擎在收到建立索引的通知后,讀取該數(shù)據(jù)管理方所有可搜索的數(shù)據(jù)項(xiàng)描述,重新生成索引。
在另一種實(shí)現(xiàn)方式中,數(shù)據(jù)管理方可以在可搜索的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),向搜索引擎發(fā)送數(shù)據(jù)項(xiàng)描述變化的通知,其中包括發(fā)生變化的數(shù)據(jù)項(xiàng)標(biāo)識(shí)。搜索引擎在收到數(shù)據(jù)項(xiàng)描述變化的通知后,從中提取發(fā)生變化的數(shù)據(jù)項(xiàng)標(biāo)識(shí),利用該數(shù)據(jù)項(xiàng)標(biāo)識(shí)向數(shù)據(jù)管理方獲取變化后的數(shù)據(jù)項(xiàng)描述。搜索引擎在索引中刪除與變化前的該數(shù)據(jù)項(xiàng)描述關(guān)聯(lián)的內(nèi)容,添加根據(jù)變化后的該數(shù)據(jù)項(xiàng)描述生成的內(nèi)容。例如,在可搜索數(shù)據(jù)項(xiàng)為數(shù)據(jù)庫(kù)表記錄的應(yīng)用場(chǎng)景中,數(shù)據(jù)項(xiàng)描述可以是包括數(shù)據(jù)庫(kù)表主鍵(通常作為數(shù)據(jù)項(xiàng)標(biāo)識(shí))在內(nèi)的一個(gè)到多個(gè)字段;可以為這些數(shù)據(jù)庫(kù)表的字段注冊(cè)鉤子函數(shù)(hook),注冊(cè)后的鉤子函數(shù)將在這些字段發(fā)生變化時(shí)發(fā)出通知,這樣搜索引擎即可在數(shù)據(jù)項(xiàng)描述發(fā)生變化后收到通知,從而及時(shí)更新需要隨之修改的索引內(nèi)容。根據(jù)應(yīng)用場(chǎng)景中數(shù)據(jù)庫(kù)的類型,可以選用現(xiàn)有技術(shù)中對(duì)應(yīng)數(shù)據(jù)庫(kù)類型提供的鉤子函數(shù),也可以參照現(xiàn)有技術(shù)自行實(shí)現(xiàn)這樣的鉤子函數(shù)。
在本申請(qǐng)的應(yīng)用示例一中,在一個(gè)app內(nèi),搜索引擎為多個(gè)業(yè)務(wù)功能單元提供搜索服務(wù),每個(gè)業(yè)務(wù)功能單元的業(yè)務(wù)組件與搜索引擎進(jìn)行交互,其可搜索的數(shù)據(jù)項(xiàng)為各自業(yè)務(wù)數(shù)據(jù)庫(kù)表中的記錄,搜索引擎不能直接訪問業(yè)務(wù)數(shù)據(jù)庫(kù)。其交互關(guān)系如圖3所示。
管理員為搜索引擎配置各個(gè)業(yè)務(wù)功能單元的業(yè)務(wù)組件的訪問接口。
當(dāng)搜索引擎收到用戶的搜索字符串后,查看搜索字符串關(guān)聯(lián)的業(yè)務(wù)的索引是否已經(jīng)建立,如果尚未建立,則通過該業(yè)務(wù)的業(yè)務(wù)組件接口向?qū)?yīng)的業(yè)務(wù)功能單元發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,業(yè)務(wù)組件在收到請(qǐng)求后,從作為搜索對(duì)象的業(yè)務(wù)數(shù)據(jù)庫(kù)表中讀取每條記錄的主鍵(本應(yīng)用示例中的數(shù)據(jù)項(xiàng)描述和數(shù)據(jù)項(xiàng)標(biāo)識(shí)),并返回給搜索引擎。搜索引擎根據(jù)接收的主鍵,在緩存中建立該業(yè)務(wù)的索引。
如果與搜索字符串關(guān)聯(lián)的業(yè)務(wù)的索引已經(jīng)建立,或在該業(yè)務(wù)的索引建立后,搜索引擎在該業(yè)務(wù)的索引中查找與搜索字符串匹配的主鍵。索引查找完畢后,搜索引擎將所有找到的主鍵在獲取數(shù)據(jù)項(xiàng)的請(qǐng)求中發(fā)送給業(yè)務(wù)組件,業(yè)務(wù)組件從業(yè)務(wù)數(shù)據(jù)庫(kù)中讀取這個(gè)或這些主鍵所在的記錄,返回給搜索引擎。
搜索引擎對(duì)返回的各條記錄進(jìn)行加工,生成搜索結(jié)果,呈現(xiàn)給用戶。
如果可搜索數(shù)據(jù)庫(kù)表的主鍵發(fā)生變化,業(yè)務(wù)組件向搜索引擎發(fā)送建立索引的通知。搜索引擎重新向業(yè)務(wù)組件獲取所有記錄的主鍵,生成該業(yè)務(wù)的新索引,并替換緩存中的該業(yè)務(wù)原來的索引。
在本申請(qǐng)的應(yīng)用示例二中,搜索引擎為多個(gè)業(yè)務(wù)功能單元提供搜索服務(wù),每個(gè)業(yè)務(wù)功能單元的業(yè)務(wù)組件與搜索引擎進(jìn)行交互,其可搜索的數(shù)據(jù)項(xiàng)為各自業(yè)務(wù)數(shù)據(jù)庫(kù)表中的記錄,搜索引擎通過業(yè)務(wù)組件來獲得業(yè)務(wù)數(shù)據(jù)庫(kù)中的記錄,但當(dāng)業(yè)務(wù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),由業(yè)務(wù)數(shù)據(jù)庫(kù)通知搜索引擎發(fā)生變化的記錄的數(shù)據(jù)項(xiàng)標(biāo)識(shí)。其交互關(guān)系如圖4所示。
管理員在搜索引擎上配置業(yè)務(wù)組件的訪問接口、作為搜索對(duì)象的業(yè)務(wù)數(shù)據(jù)庫(kù)表、以及作為數(shù)據(jù)項(xiàng)描述的業(yè)務(wù)數(shù)據(jù)庫(kù)表的字段;在業(yè)務(wù)數(shù)據(jù)庫(kù)上為作為數(shù)據(jù)項(xiàng)描述的業(yè)務(wù)數(shù)據(jù)庫(kù)表的字段(其中包括作為數(shù)據(jù)項(xiàng)標(biāo)識(shí)的主鍵)配置鉤子函數(shù)、以及當(dāng)這些字段發(fā)生變化時(shí)通知的目的方接口(即搜索引擎的接口)。
當(dāng)搜索引擎收到用戶的搜索字符串后,查看搜索字符串關(guān)聯(lián)的業(yè)務(wù)的索引是否已經(jīng)建立,如果尚未建立,則通過該業(yè)務(wù)的業(yè)務(wù)組件接口向?qū)?yīng)的業(yè)務(wù)組件發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,業(yè)務(wù)組件在收到請(qǐng)求后,從作為搜索對(duì) 象的數(shù)據(jù)庫(kù)表中讀取每條記錄的主鍵,返回給搜索引擎。搜索引擎根據(jù)接收的主鍵,建立該業(yè)務(wù)的索引并保存在索引文件中。
如果與搜索字符串關(guān)聯(lián)的業(yè)務(wù)的索引已經(jīng)建立,或在該業(yè)務(wù)的索引建立后,搜索引擎在該業(yè)務(wù)的索引中查找與搜索字符串匹配的主鍵。索引查找完畢后,搜索引擎將所有找到的主鍵在獲取數(shù)據(jù)項(xiàng)的請(qǐng)求中發(fā)送給業(yè)務(wù)組件,業(yè)務(wù)組件從業(yè)務(wù)數(shù)據(jù)庫(kù)中讀取這個(gè)或這些主鍵所在的記錄,返回給搜索引擎。
搜索引擎對(duì)返回的各條記錄進(jìn)行加工,生成搜索結(jié)果,呈現(xiàn)給用戶。
如果可搜索數(shù)據(jù)庫(kù)表的主鍵發(fā)生變化,檢測(cè)到變化的鉤子函數(shù)向搜索引擎發(fā)送數(shù)據(jù)項(xiàng)描述變化的通知,其中包括發(fā)生變化的記錄的主鍵。搜索引擎收到數(shù)據(jù)項(xiàng)描述變化的通知,采用其中的主鍵通過業(yè)務(wù)組件獲取到發(fā)生變化的記錄中用作數(shù)據(jù)項(xiàng)描述的字段。搜索引擎根據(jù)該主鍵查找索引文件,刪除所有該主鍵關(guān)聯(lián)的內(nèi)容(如果發(fā)生變化的是主鍵,則搜索引擎要查找并刪除所有與變化前的主鍵關(guān)聯(lián)的內(nèi)容);搜索引擎根據(jù)變化后的用作數(shù)據(jù)項(xiàng)描述的字段生成新的索引內(nèi)容,并添加到該業(yè)務(wù)的索引中。
與上述流程實(shí)現(xiàn)對(duì)應(yīng),本申請(qǐng)的實(shí)施例還提供了一種應(yīng)用搜索引擎的數(shù)據(jù)搜索實(shí)現(xiàn)裝置,和一種應(yīng)用于數(shù)據(jù)管理方的數(shù)據(jù)搜索實(shí)現(xiàn)裝置。這兩種裝置均可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為邏輯意義上的裝置,是通過終端的cpu(centralprocessunit,中央處理器)將對(duì)應(yīng)的計(jì)算機(jī)程序指令讀取到內(nèi)存中運(yùn)行形成的。從硬件層面而言,除了圖5所示的cpu、內(nèi)存以及非易失性存儲(chǔ)器之外,終端通常還包括用于進(jìn)行無線信號(hào)收發(fā)的芯片等其他硬件。
圖6所示為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)搜索的實(shí)現(xiàn)裝置,應(yīng)用于搜索引擎,包括索引生成單元、索引查找單元和搜索結(jié)果單元,其中:索引生成單元用于在滿足設(shè)定條件時(shí),根據(jù)從數(shù)據(jù)管理方獲取的可搜索數(shù)據(jù)項(xiàng)的描述生成索引,所述數(shù)據(jù)項(xiàng)描述中包括所述數(shù)據(jù)管理方每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);索引查找單元用于根據(jù)來自用戶搜索請(qǐng)求中的搜索字符串,在索引中查找與所述搜索字符串匹配的數(shù)據(jù)項(xiàng)標(biāo)識(shí);搜索結(jié)果單元用于采用所述數(shù)據(jù)項(xiàng)標(biāo)識(shí) 從數(shù)據(jù)管理方獲取對(duì)應(yīng)的數(shù)據(jù)項(xiàng);基于獲取的數(shù)據(jù)項(xiàng)生成搜索結(jié)果。
可選的,所述設(shè)定條件包括:收到用戶的搜索請(qǐng)求,并且尚未為所述搜索請(qǐng)求針對(duì)的數(shù)據(jù)管理方建立索引;和/或,收到數(shù)據(jù)管理方建立索引的通知;所述裝置還包括:數(shù)據(jù)項(xiàng)描述請(qǐng)求單元,用于向數(shù)據(jù)管理方發(fā)送獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,接收數(shù)據(jù)管理方返回的可搜索數(shù)據(jù)項(xiàng)的描述。
一個(gè)例子中,所述裝置還包括描述變化通知接收單元、描述變化獲取單元和索引更新單元,其中:描述變化通知接收單元用于從數(shù)據(jù)管理方接收數(shù)據(jù)項(xiàng)描述變化的通知,其中包括發(fā)生變化的數(shù)據(jù)項(xiàng)標(biāo)識(shí);描述變化獲取單元用于根據(jù)發(fā)生變化的數(shù)據(jù)項(xiàng)標(biāo)識(shí),獲取變化后的數(shù)據(jù)項(xiàng)描述;索引更新單元用于刪除索引中與變化前的所述數(shù)據(jù)項(xiàng)描述關(guān)聯(lián)的內(nèi)容,在索引中添加根據(jù)變化后的所述數(shù)據(jù)項(xiàng)描述生成的內(nèi)容。
上述例子中,所述可搜索數(shù)據(jù)項(xiàng)的數(shù)據(jù)項(xiàng)描述可以包括:至少一個(gè)數(shù)據(jù)庫(kù)表的字段,其中包括數(shù)據(jù)項(xiàng)標(biāo)識(shí);所述數(shù)據(jù)庫(kù)表注冊(cè)有當(dāng)所述字段發(fā)生變化時(shí)發(fā)送通知的鉤子函數(shù);所述數(shù)據(jù)項(xiàng)描述變化通知單元具體用于:接收在所述數(shù)據(jù)庫(kù)表注冊(cè)的鉤子函數(shù)在可搜索數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí)發(fā)送的通知。
上述例子中,所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)包括:所述數(shù)據(jù)庫(kù)表的主鍵。
可選的,所述索引采用緩存方式保存,或保存在索引文件中。
圖7所示為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)搜索的實(shí)現(xiàn)裝置,應(yīng)用于數(shù)據(jù)管理方,包括數(shù)據(jù)項(xiàng)描述提供單元和數(shù)據(jù)項(xiàng)提供單元,其中:數(shù)據(jù)項(xiàng)描述提供單元用于根據(jù)搜索引擎獲取數(shù)據(jù)項(xiàng)描述的請(qǐng)求,向搜索引擎提供可搜索數(shù)據(jù)項(xiàng)的描述,其中包括每個(gè)可搜索數(shù)據(jù)項(xiàng)的標(biāo)識(shí);數(shù)據(jù)項(xiàng)提供單元用于根據(jù)搜索引擎攜帶有數(shù)據(jù)項(xiàng)標(biāo)識(shí)的獲取數(shù)據(jù)項(xiàng)的請(qǐng)求,將對(duì)應(yīng)于所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)的數(shù)據(jù)項(xiàng)返回給搜索引擎。
可選的,所述裝置還包括:索引建立通知單元,用于在可搜索的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),向搜索引擎發(fā)送建立索引的通知。
一個(gè)例子中,所述裝置還包括數(shù)據(jù)項(xiàng)描述變化通知單元,用于在可搜索的數(shù)據(jù)項(xiàng)描述發(fā)生變化時(shí),向搜索引擎發(fā)送數(shù)據(jù)項(xiàng)描述變化的通知,其中包 括發(fā)生變化的數(shù)據(jù)項(xiàng)標(biāo)識(shí),供搜索引擎更新與發(fā)生變化的數(shù)據(jù)項(xiàng)描述關(guān)聯(lián)的索引。
上述例子中,所述可搜索數(shù)據(jù)項(xiàng)的數(shù)據(jù)項(xiàng)描述可以包括:至少一個(gè)數(shù)據(jù)庫(kù)表的字段,其中包括數(shù)據(jù)項(xiàng)標(biāo)識(shí);所述數(shù)據(jù)庫(kù)表注冊(cè)有當(dāng)所述字段發(fā)生變化時(shí)發(fā)送通知的鉤子函數(shù);所述數(shù)據(jù)項(xiàng)描述變化的通知包括:在所述鉤子函數(shù)監(jiān)測(cè)到所述字段發(fā)生變化時(shí)發(fā)送的通知。
可選的,所述數(shù)據(jù)項(xiàng)標(biāo)識(shí)包括:所述數(shù)據(jù)庫(kù)表的主鍵。
以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包 括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。