專利名稱:一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在線數(shù)據(jù)庫(kù)檢索或在線搜索引擎技術(shù)領(lǐng)域,具體說(shuō)是一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法。所述數(shù)據(jù)庫(kù)尤指視頻網(wǎng)站用于存儲(chǔ)在線視頻信息的數(shù)據(jù)庫(kù)。
背景技術(shù):
現(xiàn)有的視頻網(wǎng)站都會(huì)為用戶提供視頻信息檢索服務(wù),視頻網(wǎng)站將視頻信息分類(lèi)后存儲(chǔ)在數(shù)據(jù)庫(kù)中,視頻網(wǎng)站會(huì)使用很多的數(shù)據(jù)庫(kù)及數(shù)據(jù)表來(lái)存儲(chǔ)數(shù)據(jù),一個(gè)數(shù)據(jù)庫(kù)包括若干個(gè)數(shù)據(jù)表,具體的視頻信息都存儲(chǔ)在數(shù)據(jù)表中。傳統(tǒng)的視頻信息檢索方式是應(yīng)用層需要跟據(jù)業(yè)務(wù)需求,到不同的數(shù)據(jù)庫(kù)和不同的數(shù)據(jù)表去取數(shù)據(jù),這些數(shù)據(jù)表的查尋一般無(wú)法達(dá)到使用任何查尋都有很高的效率,并且,這些數(shù)據(jù)表可能是分散存儲(chǔ)在不同的數(shù)據(jù)庫(kù)中的, 應(yīng)用層使用起來(lái)非常不方便。現(xiàn)有的視頻信息檢索服務(wù)采用的是目錄式分類(lèi)法,目錄式分類(lèi)法只能按照一個(gè)特定的維度進(jìn)行分類(lèi),比如樹(shù)形分類(lèi),再比如我們的文件目錄結(jié)構(gòu)等。但生活中往往一個(gè)對(duì)象,可以有多種屬性,比如圖書(shū),可以有作者、年代、出版商、類(lèi)形等。而用戶可能從各種不同的維度出發(fā),查找感興趣的內(nèi)容。現(xiàn)有的視頻信息檢索服務(wù)并不一定使用的是目錄式分類(lèi)法,目錄式分類(lèi)法只是常用分類(lèi)法的一種,目前傳統(tǒng)開(kāi)發(fā)方式也有很多采用多面篩選法或叫面分類(lèi)法,這種方法并非本系統(tǒng)獨(dú)創(chuàng),面分類(lèi)法是由冒號(hào)分類(lèi)法演變而來(lái),冒號(hào)分類(lèi)法的發(fā)明人應(yīng)該是印度人 S. R. Ranganathan0但傳統(tǒng)實(shí)現(xiàn)方式基本上是跟據(jù)業(yè)務(wù)需求來(lái)定制數(shù)據(jù)庫(kù),當(dāng)業(yè)務(wù)邏輯發(fā)生變化時(shí)數(shù)據(jù)庫(kù)結(jié)構(gòu),實(shí)現(xiàn)代碼等一系列內(nèi)容都要跟著修改,基本上沒(méi)有靈活性可言。本系統(tǒng)的一個(gè)方面就是要解決業(yè)務(wù)邏輯靈活性問(wèn)題,業(yè)務(wù)層無(wú)論發(fā)生何種變化,都不會(huì)對(duì)數(shù)據(jù)結(jié)構(gòu)和代碼構(gòu)成同步大量修改。以圖書(shū)為例使用目錄式分類(lèi)法進(jìn)行檢索,就像我們?cè)趫D書(shū)館找一本關(guān)于計(jì)算機(jī)編程的書(shū),我們先要知道,找的書(shū)是屬于什么類(lèi)的,如文史類(lèi)、經(jīng)濟(jì)類(lèi)還是計(jì)算機(jī)類(lèi)圖書(shū),因?yàn)槭蔷幊填?lèi)的,所以找到計(jì)算機(jī)類(lèi)圖書(shū)的專區(qū)后,再找編程類(lèi),然后可能更具體的,再找PHP 編程,還是JAVA編程等等,一級(jí)級(jí)找下去。還是以圖書(shū)為例,假設(shè)我現(xiàn)在只知道該書(shū)的作者,那么我可能直接使用作者來(lái)進(jìn)行查找,一下能列出該作者所著的所有著作,這就好像在圖書(shū)館里,提供了一某作者的專區(qū)。比如小說(shuō)《達(dá)芬奇密碼》,作者丹布朗,在小說(shuō)類(lèi)的書(shū)架上有該書(shū),而圖書(shū)館為了促銷(xiāo),專門(mén)設(shè)置的丹布朗專區(qū),在這里我可以找到所有丹布朗的著作。但在現(xiàn)實(shí)生活中,由于作者有千千萬(wàn),不可能為每個(gè)作者都設(shè)立專區(qū),而且還會(huì)有年代,出版社等內(nèi)容,同時(shí)還會(huì)有組合情況發(fā)生,如清華出版社1990-2000年發(fā)行的所有圖書(shū)?,F(xiàn)實(shí)生活中,這種分類(lèi)方式幾乎是不可能實(shí)現(xiàn)的。使用傳統(tǒng)的數(shù)據(jù)庫(kù)查尋技術(shù),在數(shù)據(jù)量較小的時(shí)候,比如一張表幾百條記錄,也是可實(shí)現(xiàn)不同維度(數(shù)據(jù)庫(kù)里一般一個(gè)維度就是一個(gè)字段)的快速查找,但僅局限在一張表內(nèi)的查找,如果一個(gè)資源是由很多表組成,則需要查尋多次,比如視頻信息,視頻的標(biāo)題,簡(jiǎn)介,創(chuàng)建時(shí)間等放在一張表,而播放數(shù),評(píng)論數(shù)等放在另一張表,那就要查尋兩次。而一個(gè)資源,如我們的視頻信息,需要幾十張表存儲(chǔ)不同的內(nèi)容。這種查尋不但復(fù)雜,而且數(shù)據(jù)量只有在很小的時(shí)候才能有很高的查尋效率,顯然,傳統(tǒng)數(shù)據(jù)庫(kù)查尋無(wú)法滿足大數(shù)據(jù)量且任意字段組合的查尋。本發(fā)明中所說(shuō)的維度,是指思維的維度,比如一個(gè)視頻,可以從分類(lèi)的維度去找 (如電影、電視劇、綜藝),也可以從發(fā)行的年代的維度去找。屬性則可以理解為每個(gè)屬性是一個(gè)思維的維度的技術(shù)表現(xiàn)形式。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,中間層系統(tǒng)能接收基于http協(xié)議的檢索請(qǐng)求,經(jīng)過(guò)語(yǔ)法分析引擎解析后,能精確獲取數(shù)據(jù),滿足大數(shù)據(jù)量且任意字段組合的查尋,數(shù)據(jù)庫(kù)查尋時(shí)間短, 數(shù)據(jù)層與應(yīng)用層分離,數(shù)據(jù)層和應(yīng)用層的開(kāi)發(fā)互不影響。為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),其特征在于,包括用于接收應(yīng)用層發(fā)出的檢索請(qǐng)求的API應(yīng)用服務(wù)器群組,所述應(yīng)用層發(fā)出的檢索請(qǐng)求為一個(gè)符合URL規(guī)范的http地址,該http地址中包括用于在數(shù)據(jù)庫(kù)中進(jìn)行檢索的相應(yīng)的參數(shù),用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的索引服務(wù)器群Sphinx Server, 所述索引服務(wù)器群包括若干節(jié)點(diǎn)服務(wù)器Node Indexer Server,用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的在線數(shù)據(jù)庫(kù)服務(wù)器群,所述在線數(shù)據(jù)庫(kù)服務(wù)器群包括若干在線數(shù)據(jù)庫(kù)群組,離線數(shù)據(jù)庫(kù)服務(wù)器群,通過(guò)數(shù)據(jù)交互通道與在線數(shù)據(jù)庫(kù)服務(wù)器群進(jìn)行數(shù)據(jù)同步, 所述離線數(shù)據(jù)庫(kù)服務(wù)器群包括若干離線數(shù)據(jù)庫(kù)群組,索引創(chuàng)建服務(wù)器,索引創(chuàng)建服務(wù)器跟據(jù)索引配置文件中指定的離線數(shù)據(jù)庫(kù)群組得到數(shù)據(jù)來(lái)創(chuàng)建索引,索引創(chuàng)建服務(wù)器創(chuàng)建索引的過(guò)程,就是生成索引文件的過(guò)程,索引文件存儲(chǔ)在索引創(chuàng)建服務(wù)器中,索引服務(wù)器群中的各節(jié)點(diǎn)服務(wù)器從索引創(chuàng)建服務(wù)器中獲取最新的索引文件。在上述技術(shù)方案的基礎(chǔ)上,所述API應(yīng)用服務(wù)器群組包括若干APP服務(wù)器APP Server,每個(gè)APP Server中均設(shè)有服務(wù)軟件,所述服務(wù)軟件包括用來(lái)接收http請(qǐng)求的服務(wù)軟件nginx,用來(lái)管理php運(yùn)行進(jìn)程的服務(wù)軟件php fpm,用來(lái)解析php腳本的服務(wù)軟件 php,服務(wù)軟件用于完成接收請(qǐng)求和語(yǔ)法分析,此即語(yǔ)法分析引擎。在上述技術(shù)方案的基礎(chǔ)上,索引文件會(huì)放在索引創(chuàng)建服務(wù)器上的FTP服務(wù)目錄下,通過(guò)服務(wù)器上的定時(shí)任務(wù)執(zhí)行程序定時(shí)生成一個(gè)新的索引文件,并以文本方式記錄本次生成的索引文件的版本號(hào),新的版本號(hào)是上一次生成的版本號(hào)加一;索引創(chuàng)建服務(wù)器同時(shí)安裝了 FTP服務(wù),節(jié)點(diǎn)服務(wù)器通過(guò)FTP客戶端命令,訪問(wèn)到 FTP服務(wù)目錄下的各個(gè)索引文件。在上述技術(shù)方案的基礎(chǔ)上,節(jié)點(diǎn)服務(wù)器每次從索引創(chuàng)建服務(wù)器下載索引文件,也會(huì)在本地記錄當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào),節(jié)點(diǎn)服務(wù)器定時(shí)將本地當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào)與索引創(chuàng)建服務(wù)器上最新的索引文件的版本號(hào)對(duì)比,當(dāng)小于時(shí),則重新下載索引創(chuàng)建服務(wù)器上最新的索引文件。一種基于上述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)的信息檢索方法,其特征在于,包括以下步驟步驟1,MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)的內(nèi)容是一一對(duì)應(yīng)的,有一個(gè)在線視頻庫(kù),就會(huì)有一個(gè)離線視頻庫(kù),通過(guò)MySQL的主從同步復(fù)制功能,將在線數(shù)據(jù)庫(kù)實(shí)時(shí)同步復(fù)制到離線數(shù)據(jù)庫(kù)當(dāng)中;步驟2,MySQL離線數(shù)據(jù)庫(kù)是專門(mén)供索引創(chuàng)建服務(wù)器使用的,索引創(chuàng)建服務(wù)器上安裝sphinx的indexer程序,indexer程序會(huì)跟據(jù)對(duì)應(yīng)的配置文件,生成索引,所述配置文件包括數(shù)據(jù)來(lái)源參數(shù),數(shù)據(jù)來(lái)源參數(shù)指向MySQL離線數(shù)據(jù)庫(kù),sphinx的indexer程序定時(shí)生成索引文件;步驟3,API應(yīng)用服務(wù)器裝有ngiruuphp-fpm和php,nginx用于接收到http請(qǐng)求, php-fpm負(fù)責(zé)調(diào)用php腳本,而php本身是用來(lái)解析語(yǔ)法分析引擎的程序;當(dāng)服務(wù)器接收到 http請(qǐng)求時(shí),對(duì)http請(qǐng)求中的參數(shù)進(jìn)行分析通過(guò)對(duì)q參數(shù)和ob參數(shù)進(jìn)行分析,確定需要查尋哪些條件,將分析結(jié)果轉(zhuǎn)換成sphinx可以識(shí)別的查尋條件,向索引服務(wù)器發(fā)送查尋請(qǐng)求,索引服務(wù)器跟據(jù)查尋條件,在索引中進(jìn)行查尋,索引服務(wù)器將查尋后的文檔ID返回給 API應(yīng)用服務(wù)器;步驟4,API應(yīng)用服務(wù)器得到文檔ID后,通過(guò)分析http請(qǐng)求中的fd參數(shù),確定需要返回哪些字段,然后利用剛剛得到的文檔ID去MySQL數(shù)據(jù)庫(kù)進(jìn)行查尋需要返回的數(shù)據(jù), 所述文檔id在mysql里為主鍵。在上述技術(shù)方案的基礎(chǔ)上,在MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)中,跟據(jù)業(yè)務(wù)需求按群組劃分?jǐn)?shù)據(jù)庫(kù)。本發(fā)明所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,當(dāng)用戶通過(guò)應(yīng)用層來(lái)檢索(查詢)數(shù)據(jù)表中的視頻信息時(shí),給出一個(gè)http地址作為請(qǐng)求發(fā)送到中間層, 由中間層完成在數(shù)據(jù)庫(kù)中檢索視頻信息,并將檢索結(jié)果返回給應(yīng)用層的工作。本發(fā)明所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,具有以下優(yōu)占.
^ \\\ ·1.基于http協(xié)議傳統(tǒng)的數(shù)據(jù)庫(kù)直接調(diào)用數(shù)據(jù)方式,與業(yè)務(wù)邏輯關(guān)系非常緊密,往往需要跟據(jù)業(yè)務(wù)需求,使用不同的數(shù)據(jù)庫(kù)類(lèi)型,并需要跟據(jù)業(yè)務(wù)層面需求來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu)和數(shù)據(jù)索引,當(dāng)業(yè)務(wù)量不斷擴(kuò)展,其數(shù)據(jù)庫(kù)也會(huì)隨之變得復(fù)雜。簡(jiǎn)單的說(shuō),業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查尋索引三個(gè)方面是綁在一起的,任何一個(gè)有變化都會(huì)影響到其它兩方面。本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,通過(guò)http方式調(diào)用數(shù)據(jù),可以徹底將數(shù)據(jù)庫(kù)層面和業(yè)務(wù)層面隔離開(kāi),而通過(guò)sphinx ( 一個(gè)基于SQL的全文檢索引擎,可以結(jié)合MySQL、 PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫(kù)本身更專業(yè)的搜索功能)索引服務(wù),又將數(shù)據(jù)存儲(chǔ)和索引分開(kāi),使業(yè)務(wù)邏輯、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查尋索引相對(duì)獨(dú)立,互不影響。未來(lái)數(shù)據(jù)庫(kù)不管是用mysql存儲(chǔ)還是mongodb存儲(chǔ),都不會(huì)響業(yè)務(wù)層應(yīng)用。
6
2.精確獲取數(shù)據(jù)(相對(duì)于搜索引擎)傳統(tǒng)的搜索引擎,一般是通過(guò)關(guān)鍵字分詞方式,在文本內(nèi)容中進(jìn)行全文查找,這種查尋返回的結(jié)果,主要依賴分詞算法,但分詞算法無(wú)論如何優(yōu)化,都有可能搜索出來(lái)的結(jié)果并不是用戶相要的。本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,可針對(duì)字段進(jìn)行精確定向查尋,返回給果一定是前端所需結(jié)果,而非模糊搜索的結(jié)果。比如查找當(dāng)天播放數(shù)大于1 一萬(wàn)的視頻,直接使用表達(dá)式day_VV: 10000-,這有點(diǎn)像傳統(tǒng)數(shù)據(jù)庫(kù)的條件查尋語(yǔ)句where day_VV > 10000,但傳統(tǒng)數(shù)據(jù)庫(kù)必須在day_VV字段上加索引才能快速查尋。3.數(shù)據(jù)層與應(yīng)用層分離(單獨(dú)開(kāi)發(fā)互不影響)上面已經(jīng)提到,本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,由于使用http協(xié)議進(jìn)行數(shù)據(jù)傳送,增加字段或修改數(shù)據(jù)庫(kù)結(jié)構(gòu)等操作,對(duì)應(yīng)用端來(lái)說(shuō)都是透明的,應(yīng)用層讀取數(shù)據(jù)的方式永遠(yuǎn)都是通過(guò)http協(xié)議向接口請(qǐng)求數(shù)據(jù),所以數(shù)據(jù)庫(kù)層面的修改不會(huì)影響到應(yīng)用層,這也使得數(shù)據(jù)層和應(yīng)用層的開(kāi)發(fā)互不影響。4.統(tǒng)一的數(shù)據(jù)讀取方法(協(xié)議)傳統(tǒng)的方法是應(yīng)用層的程序要直接到數(shù)據(jù)庫(kù)讀取數(shù)據(jù),這就需要知道數(shù)據(jù)庫(kù)如何配置的,數(shù)據(jù)結(jié)構(gòu)是怎樣的等一些關(guān)于數(shù)據(jù)庫(kù)的具體問(wèn)題,而且,不同的數(shù)據(jù)庫(kù)都不一樣, 應(yīng)用層使用起來(lái)非常繁瑣。本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,使用中間層接口讀取數(shù)據(jù),都是通過(guò)一個(gè)http地址請(qǐng)求獲取數(shù)據(jù),而且所使用的查尋表達(dá)式規(guī)范相同,這樣不管是讀取節(jié)目數(shù)據(jù)還是視頻數(shù)據(jù),查尋方法完全一樣,所不同就是告訴接口要節(jié)目數(shù)據(jù)還是視頻數(shù)據(jù),有哪些字段等。對(duì)于前端應(yīng)用來(lái)說(shuō),只要學(xué)會(huì)查尋表達(dá)式,就可輕易讀取任何想要的數(shù)據(jù),而不用關(guān)心數(shù)據(jù)庫(kù)存儲(chǔ)和索引等內(nèi)容。開(kāi)發(fā)效率和開(kāi)發(fā)成本大大降低。5.極好的性能傳統(tǒng)的數(shù)據(jù)庫(kù)存儲(chǔ),數(shù)據(jù)讀取往往由業(yè)務(wù)邏輯決定,時(shí)刻都要關(guān)心是業(yè)務(wù)邏輯需要的查尋,數(shù)據(jù)庫(kù)是否能滿足查尋需求,執(zhí)行效率如何等一系列問(wèn)題。本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,中間層由于使用獨(dú)立的索引系統(tǒng),將所有字段都進(jìn)行了索引,所以通過(guò)中間層獲取數(shù)據(jù),字段查尋可以任意組合同時(shí)可以保證高效查尋。業(yè)務(wù)邏輯永遠(yuǎn)不用關(guān)心查尋效率問(wèn)題,也不用關(guān)心字段查尋的先后順序。舉例來(lái)說(shuō),傳統(tǒng)數(shù)據(jù)庫(kù)有一張數(shù)據(jù)表A,表A中有三個(gè)字段Fl、F2、F3,數(shù)據(jù)庫(kù)在Fl上有索引,假如該表有一千萬(wàn)數(shù)據(jù),使用傳統(tǒng)的查尋方式,查尋條件中只能對(duì)Fl進(jìn)行查尋,才能命中索引,查尋時(shí)間可以在0. 1秒以內(nèi),如果對(duì)F2或F3或它們之間任意組合的查尋,由于無(wú)法命中索引,就需要全表掃描,其查尋時(shí)間從幾分鐘到幾十分鐘都是有可能的,這顯然不能滿足線上應(yīng)用需求。而中間層由于使用了獨(dú)立的索引服務(wù),這一千萬(wàn)數(shù)據(jù)都是通過(guò)離線方式將F1、F2、F3 全部創(chuàng)建了索引,而且索引都放在內(nèi)存當(dāng)中,這樣業(yè)務(wù)層無(wú)論是查尋任何一個(gè)字段或組合, 都可以命中索引,查尋時(shí)間都可控制在0. 1秒以內(nèi)。
本發(fā)明有如下附圖圖1中間層服務(wù)器架構(gòu)示意圖,
圖2中間層所處位置示意圖,圖3中間層與各模塊之間的關(guān)系示意圖,圖4語(yǔ)法分析引擎工作流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,主要用于視頻網(wǎng)站為用戶提供海量視頻信息檢索服務(wù),或具有類(lèi)似檢索需求的場(chǎng)合,當(dāng)用戶通過(guò)應(yīng)用層來(lái)檢索(查詢)數(shù)據(jù)表中的視頻信息時(shí),給出一個(gè)http地址作為請(qǐng)求發(fā)送到中間層,由中間層解析該http地址獲得請(qǐng)求檢索的相關(guān)信息后,完成在數(shù)據(jù)庫(kù)中對(duì)視頻信息的檢索,并將檢索結(jié)果返回給應(yīng)用層的工作。本發(fā)明不局限于視頻信息檢索服務(wù),本發(fā)明給出的中間層系統(tǒng)的結(jié)構(gòu)可以應(yīng)用于幾乎網(wǎng)站的所有內(nèi)容,如看吧(優(yōu)庫(kù)社區(qū)產(chǎn)品),明星(明星庫(kù)產(chǎn)品)等。本發(fā)明在目前優(yōu)酷網(wǎng)站中,主要用于數(shù)據(jù)篩選、讀取,不等同于傳統(tǒng)的基于分詞的搜索引擎,或理解為一種精確檢索的搜索引擎。在作為請(qǐng)求的http地址中包括相應(yīng)的參數(shù)供中間層在數(shù)據(jù)庫(kù)中進(jìn)行檢索。應(yīng)用層、中間層、數(shù)據(jù)庫(kù)(底層)三者的結(jié)構(gòu)關(guān)系參見(jiàn)圖2。所述的中間層包括訪問(wèn)協(xié)議,該訪問(wèn)協(xié)議是一種基于http的協(xié)議,是一個(gè)讀取數(shù)據(jù)的規(guī)范。中間層所完成的工作可劃分為對(duì)底層(數(shù)據(jù)庫(kù)),通過(guò)中間層創(chuàng)建數(shù)據(jù)表的索引,使其查尋效率非常高,應(yīng)用層不用關(guān)心條件如何組合才能命中數(shù)據(jù)表索引,各種查尋條件完全可以自由結(jié)合,而中間層負(fù)責(zé)將這些分散在各數(shù)據(jù)表中的數(shù)據(jù)讀取出來(lái)并進(jìn)行封裝,應(yīng)用層只要告訴中間層要什么數(shù)據(jù),中間層為其完成到各個(gè)數(shù)據(jù)庫(kù)和數(shù)據(jù)表的查尋工作。對(duì)應(yīng)用層,提供一種簡(jiǎn)單、高效、統(tǒng)一的讀取接口,應(yīng)用層只需要按照中間層中的訪問(wèn)協(xié)議將參數(shù)拼裝起來(lái)構(gòu)成符合規(guī)范(URL規(guī)范)的http地址,即可獲取到指定的數(shù)據(jù)。如圖1所示,本發(fā)明給出的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),包括;用于接收應(yīng)用層發(fā)出的檢索請(qǐng)求的API應(yīng)用服務(wù)器群組,所述應(yīng)用層發(fā)出的檢索請(qǐng)求為一個(gè)符合URL規(guī)范的http地址,該http地址中包括用于在數(shù)據(jù)庫(kù)中進(jìn)行檢索的相應(yīng)的參數(shù),本發(fā)明中涉及的各參數(shù)詳見(jiàn)后述,所述API應(yīng)用服務(wù)器群組包括若干APP krver (APP服務(wù)器),每個(gè)APP krver中均設(shè)有服務(wù)軟件,所述服務(wù)軟件包括用來(lái)接收http請(qǐng)求的服務(wù)軟件nginx,用來(lái)管理php 運(yùn)行進(jìn)程的服務(wù)軟件Phpfpm,用來(lái)解析php腳本的服務(wù)軟件php,服務(wù)軟件用于完成接收請(qǐng)求和語(yǔ)法分析,此即語(yǔ)法分析引擎,語(yǔ)法分析引擎工作流程圖參見(jiàn)圖4,語(yǔ)法分析引擎可以理解為將http請(qǐng)求中的參數(shù)數(shù)據(jù),解析成為sphinx服務(wù)api提供的查尋代碼和反回對(duì)應(yīng)于數(shù)據(jù)庫(kù)字段信息的一個(gè)分析器,用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的索引服務(wù)器群Sphinx Server,所述索引服務(wù)器群包括若干索引服務(wù)器(節(jié)點(diǎn)服務(wù)器)Node Indexer Server,用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的在線數(shù)據(jù)庫(kù)服務(wù)器群,所述在線數(shù)據(jù)庫(kù)服務(wù)器群包括若干在線數(shù)據(jù)庫(kù)群組,在線數(shù)據(jù)庫(kù)群組可以使用MySQL數(shù)據(jù)庫(kù),API應(yīng)用服務(wù)器群組從索引服務(wù)器群Sphinx Server獲取所請(qǐng)求檢索對(duì)象的對(duì)象身份標(biāo)識(shí)號(hào)碼ID (例如請(qǐng)求檢索對(duì)象為視頻,則獲取到的則為視頻ID),再通過(guò)檢索對(duì)象 (視頻)的ID從在線數(shù)據(jù)庫(kù)服務(wù)器群獲取最終的檢索結(jié)果,對(duì)象的ID用于唯一標(biāo)識(shí)請(qǐng)求檢索的對(duì)象,和上面提到的一樣不局限于視頻ID,視頻只是一個(gè)具體資源的示例,離線數(shù)據(jù)庫(kù)服務(wù)器群,通過(guò)數(shù)據(jù)交互通道與在線數(shù)據(jù)庫(kù)服務(wù)器群進(jìn)行數(shù)據(jù)同步,所述離線數(shù)據(jù)庫(kù)服務(wù)器群包括若干離線數(shù)據(jù)庫(kù)群組,離線數(shù)據(jù)庫(kù)群組與在線數(shù)據(jù)庫(kù)群組使用相同的數(shù)據(jù)庫(kù),例如可以使用MySQL數(shù)據(jù)庫(kù),使用相同的數(shù)據(jù)庫(kù)是為了便于進(jìn)行數(shù)據(jù)同步,索引創(chuàng)建服務(wù)器,索引創(chuàng)建服務(wù)器跟據(jù)索引配置文件中指定的離線數(shù)據(jù)庫(kù)群組得到數(shù)據(jù)來(lái)創(chuàng)建索引,索引創(chuàng)建服務(wù)器創(chuàng)建索引的過(guò)程,就是生成索引文件的過(guò)程,索引文件存儲(chǔ)在索引創(chuàng)建服務(wù)器中,索引服務(wù)器群中的各節(jié)點(diǎn)服務(wù)器從索引創(chuàng)建服務(wù)器中獲取最新的索引文件。例如索引文件會(huì)放在索引創(chuàng)建服務(wù)器上一個(gè)特定的目錄(FTP服務(wù)目錄)下,通過(guò)服務(wù)器(索引創(chuàng)建服務(wù)器)上的定時(shí)任務(wù)執(zhí)行程序(例如imix系統(tǒng)中的定時(shí)任務(wù)執(zhí)行程序 crontab)定時(shí)生成一個(gè)新的索引文件,并以文本方式記錄本次生成的索引文件的版本號(hào), 版本號(hào)為正值(例如1、2、100等正值),新的版本號(hào)是上一次生成的版本號(hào)加一。最終的目錄文件類(lèi)似于下面這樣(以節(jié)目索引為例)29504 (以版本號(hào)命名的目錄,其中存儲(chǔ)與該版本號(hào)對(duì)應(yīng)的索引文件,下同)四505(目錄)四506(目錄)四507(目錄)四508(目錄)四509(目錄)version, show, master (記錄最后版本號(hào)的文本文件,如四509是最后一個(gè)索引文件的版本號(hào),則該文本文件中記錄的內(nèi)容可以為VER_LAST = 29509)索引創(chuàng)建服務(wù)器同時(shí)安裝了 FTP服務(wù),節(jié)點(diǎn)服務(wù)器通過(guò)FTP客戶端命令,訪問(wèn)到 FTP服務(wù)目錄下的各個(gè)索引文件。節(jié)點(diǎn)服務(wù)器每次從索引創(chuàng)建服務(wù)器下載索引文件,也會(huì)在本地記錄當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào),例如在節(jié)點(diǎn)服務(wù)器中索引文件的目錄中會(huì)有一個(gè)名為 version, show. Ioc的文本文件,內(nèi)容類(lèi)似于VER_LAST_L0CAL =四508,記錄當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào)。節(jié)點(diǎn)服務(wù)器同樣可通過(guò)定時(shí)任務(wù)執(zhí)行程序crontab程序,定時(shí)執(zhí)行(如每3分鐘執(zhí)行一次)shell腳本(shell script,利用shell的功能所寫(xiě)的一個(gè)程序,這個(gè)程序是使用純文本本件,將一些shell的語(yǔ)法與指令寫(xiě)在里面,然后用正規(guī)表示法,管線命令以及數(shù)據(jù)流重導(dǎo)向等功能,以達(dá)到我們所想要的處理目的),所述shell 腳本主要完成的工作是比較本地的索引文件的版本號(hào)是否小于索引創(chuàng)建服務(wù)器上最后的索引文件的版本號(hào),如果小于,則從索引創(chuàng)建服務(wù)器上下載最后一個(gè)版本的索引文件覆蓋本地的索引文件,實(shí)現(xiàn)索引文件的更新。以前述為例本地的索引文件的版本號(hào)是四508,而索引創(chuàng)建服務(wù)器上最后的索引文件的版本號(hào)是四509,則需要更新。如果本地索引文件的版本號(hào)等于索引創(chuàng)建服務(wù)器上的最后的索引文件的版本號(hào),則說(shuō)明索引文件沒(méi)有更新,則直接結(jié)束shell腳本不做任何操作。上述中間層系統(tǒng)中各服務(wù)器的架構(gòu)可按如下設(shè)置,所述架構(gòu)是指環(huán)境及所用開(kāi)發(fā)
語(yǔ)曰 操作系統(tǒng)OS =CentOS 5. 5 ( 一個(gè)Iinux操作系統(tǒng))APP服務(wù)器APP Server =Nginx (用來(lái)接收http請(qǐng)求的服務(wù)軟件)+php fpm (用來(lái)管理php運(yùn)行進(jìn)程的服務(wù)軟件)+php (用來(lái)解析php腳本的程序)索引創(chuàng)建服務(wù)器hdex Server :SphinX(—個(gè)基于SQL的全文檢索引擎)分布據(jù)P本Distribute script :linux bash shell script (linux系統(tǒng)下的據(jù)P本語(yǔ)言)+php script (php 腳本語(yǔ)言)數(shù)據(jù)庫(kù)database =MySQL ( 一種數(shù)據(jù)庫(kù))使用中間層架構(gòu)的要求進(jìn)入中間層的資源,必須有一個(gè)唯一的對(duì)象身份標(biāo)識(shí)號(hào)碼ID(數(shù)字識(shí)別ID),所有字段或?qū)傩远际腔谠揑D之上,這是一種文檔式數(shù)據(jù)結(jié)構(gòu)。以視頻為例,首先必須有一個(gè)視頻ID,其它一切視頻信息都可以作為屬性存在,以視頻為例,其結(jié)構(gòu)類(lèi)似如下,IDtitle (標(biāo)題)seconds (視頻長(zhǎng)度)createtime (倉(cāng)Il建時(shí)間)guest (嘉賓)id (嘉賓ID,可關(guān)鏈到人物資源)name (嘉賓名)…可以看出,對(duì)于視頻資源的每個(gè)記錄,都可以認(rèn)為是一個(gè)文檔“ID”,而文檔“ID” 下,記錄著該視頻資源的所有信息,例如標(biāo)題、視頻長(zhǎng)度、創(chuàng)建時(shí)間、嘉賓、嘉賓ID、嘉賓名寸寸。以上述用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)為基礎(chǔ),本發(fā)明所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)的信息檢索方法,服務(wù)器間的工作流程包括以下步驟1.API應(yīng)用服務(wù)器裝有ngiruuphp-fpm和php,nginx用于接收到http請(qǐng)求, php-fpm負(fù)責(zé)調(diào)用php腳本,而php本身是用來(lái)解析語(yǔ)法分析引擎的程序。當(dāng)服務(wù)器接收到 http請(qǐng)求時(shí),對(duì)http請(qǐng)求中的參數(shù)進(jìn)行分析(分析過(guò)程后面有述),通過(guò)對(duì)q參數(shù)(查詢條件指定參數(shù))和ob參數(shù)(排序參數(shù))進(jìn)行分析,確定所請(qǐng)求的對(duì)象需要查尋哪些條件,將分析結(jié)果轉(zhuǎn)換成sphinx可以識(shí)別的查尋條件,向索引服務(wù)器Node Indexer krver發(fā)送查尋請(qǐng)求,索引服務(wù)器跟據(jù)查尋條件,在索引中進(jìn)行查尋,索引服務(wù)器將查尋后的對(duì)象ID (例如前述的文檔ID)返回給API應(yīng)用服務(wù)器。2. API應(yīng)用服務(wù)器得到對(duì)象ID (文檔ID)后,通過(guò)分析http請(qǐng)求中的fd參數(shù)(返回接口參數(shù)),確定需要返回哪些字段,然后利用剛剛得到的對(duì)象ID(文檔ID)去MySQL數(shù)據(jù)庫(kù)(在線數(shù)據(jù)庫(kù))進(jìn)行查尋需要返回的數(shù)據(jù)(字段)。由于查尋mysql數(shù)據(jù)庫(kù)時(shí),永遠(yuǎn)都是使用對(duì)象ID (文檔ID)查尋,而對(duì)象ID (文檔ID)在mysql里都是主鍵,所以查尋效率極
尚ο3. MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)的內(nèi)容是一一對(duì)應(yīng)的,有一個(gè)在線數(shù)據(jù)庫(kù),就會(huì)有一個(gè)離線數(shù)據(jù)庫(kù),通過(guò)MySQL的主從同步復(fù)制功能,將在線數(shù)據(jù)庫(kù)實(shí)時(shí)同步復(fù)制到離線數(shù)據(jù)庫(kù)當(dāng)中。要說(shuō)明的是,在線數(shù)據(jù)庫(kù)中包函寫(xiě)庫(kù),但本專利中不涉及此項(xiàng)內(nèi)容,所以在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)可以簡(jiǎn)單鏡像數(shù)據(jù)庫(kù),一模一樣,只是使用他們的(人或其他服務(wù)器) 不同。4.正如上面所說(shuō),MySQL離線數(shù)據(jù)庫(kù)是專門(mén)供索引創(chuàng)建服務(wù)器使用的,索引創(chuàng)建服務(wù)器上安裝sphinx的indexer程序(創(chuàng)建sphinx索引的程序),indexer程序會(huì)跟據(jù)對(duì)應(yīng)的配置文件,生成索引,而配置文件中,最重要的數(shù)據(jù)來(lái)源,就是指向的MySQL離線數(shù)據(jù)庫(kù)。創(chuàng)建索引由crontab程序定時(shí)完成,如每小時(shí)生成一次索引。該服務(wù)器同時(shí)還安裝了 ftp服務(wù),生成的索引以文件方式存放在ftp目錄下以便Node Indexer krver可以將文件復(fù)制到本地。5. Node Indexer Server 上安裝禾口 sphinx 的 searhd 月艮務(wù)(用于提供 sphinx 查尋的服務(wù)),通過(guò)crontab程序,定時(shí)執(zhí)行查尋索引創(chuàng)建服務(wù)器上生成的索引文件并與本機(jī)索引文件進(jìn)行比較的shell腳本程序,如果索引創(chuàng)建服務(wù)器上的索引文件比較新,則通過(guò)ftp 方式將其下載到本機(jī),完成下載后通知searhd程序使用新的索引文件。在MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)中,跟據(jù)業(yè)務(wù)需求按群組劃分?jǐn)?shù)據(jù)庫(kù),如圖1所示,按節(jié)目、視頻、人物劃分三個(gè)數(shù)據(jù)庫(kù)群組,離線數(shù)據(jù)庫(kù)和在線數(shù)據(jù)庫(kù)是同步對(duì)應(yīng)的關(guān)系, 如,有一個(gè)在線視頻庫(kù),就要有一個(gè)離線視頻庫(kù),在線數(shù)據(jù)庫(kù)是為線上實(shí)時(shí)提供實(shí)時(shí)數(shù)據(jù)的,而離線數(shù)據(jù)庫(kù)是為了創(chuàng)建索引使用,由于創(chuàng)建索引時(shí),數(shù)據(jù)庫(kù)服務(wù)器負(fù)載非常高,為了不影響線上實(shí)時(shí)提供數(shù)據(jù),所以才進(jìn)行在線離線分離的。該結(jié)構(gòu)理論可以支持所有的數(shù)據(jù)信息,任何信息都可以使用該結(jié)構(gòu)以達(dá)到快速檢索目的。以視頻目錄服務(wù)為例1.視頻目錄服務(wù)確定需要呈現(xiàn)的數(shù)據(jù),通過(guò)查尋表達(dá)式向中間層接口請(qǐng)求查尋;2.接口接收到查尋請(qǐng)求后,將查尋表達(dá)式提交給語(yǔ)法分析器進(jìn)行分析,解析成索引服務(wù)可接收的查尋命令,并提交給索引服務(wù)器。3.索引服務(wù)器跟據(jù)查尋命令到索引中查尋符合條件的數(shù)據(jù),并將找到的ID返回。4.話語(yǔ)法分析器得到索引服務(wù)返回的ID到,直接到數(shù)據(jù)庫(kù)中取出對(duì)應(yīng)的數(shù)據(jù),并按查尋表達(dá)式指定的返回字段和格式返回。以下為應(yīng)用層讀取數(shù)據(jù)協(xié)議與示例(是指用于在數(shù)據(jù)庫(kù)中進(jìn)行檢索的相應(yīng)的參數(shù),以及如何將這些參數(shù)拼裝獲取數(shù)據(jù)的符合URL規(guī)范的http地址,)1、查詢表達(dá)式定義基本形式:q = fieldl :valuel field2 :value2...q為查詢條件指定參數(shù),filed指的是數(shù)據(jù)表中的字段,value指字段的值。后面的跟的數(shù)字代表不同的字段和字段的值。每個(gè)字段和字段的值之間用“”號(hào)分隔,構(gòu)成了一個(gè)了最小查尋條件,多個(gè)最小查尋條件可進(jìn)行組合,形成組合查尋條件,多個(gè)最小查尋條件中間用空格分隔。條件之間是和(AND)的關(guān)系。
11
其中,字段filed不指定時(shí)可以全文范圍(指所有的文本類(lèi)型的字段)內(nèi)查尋。舉例q = showcategory 電影 releaseyear :2010q = performer 孫紅雷q=越獄q = showname 越獄作為最簡(jiǎn)單的查詢q =越獄(fieldl =Valuel只是基本形式,如果不指定會(huì)在所有的文本類(lèi)型的字段中進(jìn)行搜索)表示在節(jié)目庫(kù)中全文檢索“越獄”,“越獄”稱之為關(guān)鍵字(keyword)。所有取數(shù)據(jù)的需求無(wú)非就是“找到想要的數(shù)據(jù)”,全文范圍內(nèi)查尋(全文檢索) 是一種模糊搜索的概念,找出來(lái)的數(shù)據(jù)不一定準(zhǔn)確,所以才有了指定字段(即本文提到的 field)的查尋方式,但模糊搜索在本中間層系統(tǒng)中仍然支持。q = shown ame 越獄表示在節(jié)目的名稱(showname)里檢索關(guān)鍵字“越獄”,showname稱之為查詢字段。更進(jìn)一步,可應(yīng)用多個(gè)查尋字段q = showcategory 電視劇 releaseyear :2009可找出2009年出品的電視劇。字段值通常三種格式
權(quán)利要求
1.一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),其特征在于,包括用于接收應(yīng)用層發(fā)出的檢索請(qǐng)求的API應(yīng)用服務(wù)器群組,所述應(yīng)用層發(fā)出的檢索請(qǐng)求為一個(gè)符合URL規(guī)范的http地址,該http地址中包括用于在數(shù)據(jù)庫(kù)中進(jìn)行檢索的相應(yīng)的參數(shù),用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的索引服務(wù)器群Sphinx Server,所述索引服務(wù)器群包括若干節(jié)點(diǎn)服務(wù)器Node Indexer Server,用于接收API應(yīng)用服務(wù)器群組轉(zhuǎn)發(fā)的檢索請(qǐng)求的在線數(shù)據(jù)庫(kù)服務(wù)器群,所述在線數(shù)據(jù)庫(kù)服務(wù)器群包括若干在線數(shù)據(jù)庫(kù)群組,離線數(shù)據(jù)庫(kù)服務(wù)器群,通過(guò)數(shù)據(jù)交互通道與在線數(shù)據(jù)庫(kù)服務(wù)器群進(jìn)行數(shù)據(jù)同步,所述離線數(shù)據(jù)庫(kù)服務(wù)器群包括若干離線數(shù)據(jù)庫(kù)群組,索引創(chuàng)建服務(wù)器,索引創(chuàng)建服務(wù)器跟據(jù)索引配置文件中指定的離線數(shù)據(jù)庫(kù)群組得到數(shù)據(jù)來(lái)創(chuàng)建索引,索引創(chuàng)建服務(wù)器創(chuàng)建索引的過(guò)程,就是生成索引文件的過(guò)程,索引文件存儲(chǔ)在索引創(chuàng)建服務(wù)器中,索引服務(wù)器群中的各節(jié)點(diǎn)服務(wù)器從索引創(chuàng)建服務(wù)器中獲取最新的索引文件。
2.如權(quán)利要求1所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),其特征在于所述API應(yīng)用服務(wù)器群組包括若干APP服務(wù)器APP Server,每個(gè)APP krver中均設(shè)有服務(wù)軟件,所述服務(wù)軟件包括用來(lái)接收http請(qǐng)求的服務(wù)軟件nginx,用來(lái)管理php運(yùn)行進(jìn)程的服務(wù)軟件 phpfpm,用來(lái)解析php腳本的服務(wù)軟件php,服務(wù)軟件用于完成接收請(qǐng)求和語(yǔ)法分析,此即語(yǔ)法分析引擎。
3.如權(quán)利要求1所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),其特征在于索引文件會(huì)放在索引創(chuàng)建服務(wù)器上的FTP服務(wù)目錄下,通過(guò)服務(wù)器上的定時(shí)任務(wù)執(zhí)行程序定時(shí)生成一個(gè)新的索引文件,并以文本方式記錄本次生成的索引文件的版本號(hào),新的版本號(hào)是上一次生成的版本號(hào)加一;索引創(chuàng)建服務(wù)器同時(shí)安裝了 FTP服務(wù),節(jié)點(diǎn)服務(wù)器通過(guò)FTP客戶端命令,訪問(wèn)到FTP服務(wù)目錄下的各個(gè)索引文件。
4.如權(quán)利要求3所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng),其特征在于節(jié)點(diǎn)服務(wù)器每次從索引創(chuàng)建服務(wù)器下載索引文件,也會(huì)在本地記錄當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào),節(jié)點(diǎn)服務(wù)器定時(shí)將本地當(dāng)前節(jié)點(diǎn)服務(wù)器中所使用的索引文件的版本號(hào)與索引創(chuàng)建服務(wù)器上最新的索引文件的版本號(hào)對(duì)比,當(dāng)小于時(shí),則重新下載索引創(chuàng)建服務(wù)器上最新的索引文件。
5.一種基于權(quán)利要求1所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)的信息檢索方法,其特征在于,包括以下步驟步驟1,MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)的內(nèi)容是一一對(duì)應(yīng)的,有一個(gè)在線視頻庫(kù),就會(huì)有一個(gè)離線視頻庫(kù),通過(guò)MySQL的主從同步復(fù)制功能,將在線數(shù)據(jù)庫(kù)實(shí)時(shí)同步復(fù)制到離線數(shù)據(jù)庫(kù)當(dāng)中;步驟2,MySQL離線數(shù)據(jù)庫(kù)是專門(mén)供索引創(chuàng)建服務(wù)器使用的,索引創(chuàng)建服務(wù)器上安裝 sphinx的indexer程序,indexer程序會(huì)跟據(jù)對(duì)應(yīng)的配置文件,生成索引,所述配置文件包括數(shù)據(jù)來(lái)源參數(shù),數(shù)據(jù)來(lái)源參數(shù)指向MySQL離線數(shù)據(jù)庫(kù),sphinx的indexer程序定時(shí)生成索引文件;步驟3,API應(yīng)用服務(wù)器裝有nginx、php-fpm和php,nginx用于接收到http請(qǐng)求, php-fpm負(fù)責(zé)調(diào)用php腳本,而php本身是用來(lái)解析語(yǔ)法分析引擎的程序;當(dāng)服務(wù)器接收到 http請(qǐng)求時(shí),對(duì)http請(qǐng)求中的參數(shù)進(jìn)行分析通過(guò)對(duì)q參數(shù)和ob參數(shù)進(jìn)行分析,確定需要查尋哪些條件,將分析結(jié)果轉(zhuǎn)換成sphinx可以識(shí)別的查尋條件,向索引服務(wù)器發(fā)送查尋請(qǐng)求,索引服務(wù)器跟據(jù)查尋條件,在索引中進(jìn)行查尋,索引服務(wù)器將查尋后的文檔ID返回給 API應(yīng)用服務(wù)器;步驟4,API應(yīng)用服務(wù)器得到文檔ID后,通過(guò)分析http請(qǐng)求中的fd參數(shù),確定需要返回哪些字段,然后利用剛剛得到的文檔ID去MySQL數(shù)據(jù)庫(kù)進(jìn)行查尋需要返回的數(shù)據(jù),所述文檔id在mysql里為主鍵。
6.如權(quán)利要求5所述的信息檢索方法,其特征在于在MySQL在線數(shù)據(jù)庫(kù)和離線數(shù)據(jù)庫(kù)中,跟據(jù)業(yè)務(wù)需求按群組劃分?jǐn)?shù)據(jù)庫(kù)。
全文摘要
本發(fā)明涉及一種用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,包括用于接收應(yīng)用層發(fā)出的檢索請(qǐng)求的API應(yīng)用服務(wù)器群組,API應(yīng)用服務(wù)器群組從索引服務(wù)器群獲取所檢索視頻的ID,通過(guò)視頻的ID從在線數(shù)據(jù)庫(kù)獲取視頻,離線數(shù)據(jù)庫(kù)將在線數(shù)據(jù)庫(kù)的信息同步后,供索引創(chuàng)建服務(wù)器創(chuàng)建索引并存儲(chǔ)到索引服務(wù)器群中。本發(fā)明所述的用于數(shù)據(jù)庫(kù)信息檢索的中間層系統(tǒng)及信息檢索方法,中間層系統(tǒng)能接收基于http協(xié)議的檢索請(qǐng)求,經(jīng)過(guò)語(yǔ)法分析引擎解析后,能精確獲取數(shù)據(jù),滿足大數(shù)據(jù)量且任意字段組合的查尋,數(shù)據(jù)庫(kù)查尋時(shí)間短,數(shù)據(jù)層與應(yīng)用層分離,數(shù)據(jù)層和應(yīng)用層的開(kāi)發(fā)互不影響。
文檔編號(hào)H04L29/08GK102426589SQ20111033634
公開(kāi)日2012年4月25日 申請(qǐng)日期2011年10月31日 優(yōu)先權(quán)日2011年10月31日
發(fā)明者盧述奇, 周玉增, 姚鍵, 張坡, 徐夢(mèng)河, 潘柏宇, 邱丹 申請(qǐng)人:合一網(wǎng)絡(luò)技術(shù)(北京)有限公司