一種基于HBase的全文檢索方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種基于HBase的全文檢索方法及裝置。
【背景技術(shù)】
[0002] HBase是一個(gè)分布式、面向列的開源數(shù)據(jù)庫(kù),可實(shí)現(xiàn)上百億的結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù) 據(jù)的存儲(chǔ)能力。HBase表中可以定義列族和列值,并按照列族組織存儲(chǔ)文件,數(shù)據(jù)表的底層 存儲(chǔ)是一種KeyValue格式,并對(duì)Rowkey (行關(guān)鍵字)按照字典進(jìn)行排序并建立。
[0003] 目前,可以實(shí)現(xiàn)對(duì)HBase中所存儲(chǔ)數(shù)據(jù)的索引,該索引可以利用Rowkey的條件查 詢實(shí)現(xiàn)HBase中所存儲(chǔ)數(shù)據(jù)的查詢,該Rowkey條件查詢可以利用Filter實(shí)現(xiàn)條件查詢。
[0004] 但Filter條件查詢的性能較差,有些查詢需求可能需要對(duì)HBase表進(jìn)行全局掃 描,而對(duì)于一個(gè)上百億的數(shù)據(jù)表來說Filter條件查詢的效率較低。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本發(fā)明提供一種基于HBase的全文檢索方法及裝置,以解決現(xiàn)有技術(shù) 中查詢效率較低的問題。
[0006] 本發(fā)明提供了一種基于HBase的全文檢索方法,將HBase與Solr引擎相連接,擴(kuò) 展Solr EndPoint對(duì)象,預(yù)先將HBase中待檢索的KeyValue值所針對(duì)的索引內(nèi)容存儲(chǔ)至 Solr引擎中;還包括:
[0007] 服務(wù)器端接收客戶端發(fā)送的查詢請(qǐng)求,所述查詢請(qǐng)求攜帶查詢條件;
[0008] 服務(wù)器端調(diào)用Solr EndPoint對(duì)象,Solr EndPoint對(duì)象將所述查詢請(qǐng)求轉(zhuǎn)發(fā)至 Solr引擎,以使Solr引擎根據(jù)所述查詢條件對(duì)索引內(nèi)容進(jìn)行全文檢索;
[0009] Solr EndPoint對(duì)象接收Solr引擎返回的檢索結(jié)果,并將所述檢索結(jié)果發(fā)送至客 戶端。
[0010] 優(yōu)選地,
[0011] 進(jìn)一步包括:擴(kuò)展Solr Coprocessor對(duì)象和HSearchTable對(duì)象,預(yù)先定義Solr 索引配置和HBase索引配置,所述Solr索引配置用于限定存儲(chǔ)至Solr引擎中的索引內(nèi)容, 所述HBase索引配置用于指示索引內(nèi)容存儲(chǔ)在Solr引擎的位置;
[0012] 所述將HBase中待檢索的KeyValue值所針對(duì)的索引內(nèi)容存儲(chǔ)至Solr引擎中,包 括:服務(wù)器端接收客戶端利用HSearchTable對(duì)象發(fā)送的Put對(duì)象,所述Put對(duì)象包括待索 引的KeyValue集合;服務(wù)器端調(diào)用Solr Coprocessor對(duì)象,Solr Coprocessor對(duì)象根據(jù) 所述Solr索引配置所限定的索引內(nèi)容,遍歷所述Put對(duì)象所包括待索引的KeyValue集合, 為KeyValue集合中每一個(gè)KeyValue值構(gòu)建Document對(duì)象;根據(jù)所述HBase索引配置針對(duì) 每一個(gè)Document對(duì)象所指示存儲(chǔ)在Solr引擎的位置,將構(gòu)建的每一個(gè)Document對(duì)象寫入 Solr引擎中的相應(yīng)位置中。
[0013] 優(yōu)選地,
[0014] 進(jìn)一步包括:所述檢索結(jié)果中包括滿足所述查詢條件的RowKey值;
[0015] 進(jìn)一步包括:服務(wù)器端接收客戶端根據(jù)所述檢索結(jié)果以及Filters查詢條件發(fā)送 的Get查詢對(duì)象;根據(jù)所述Get查詢對(duì)象,在所述檢索結(jié)果中查找滿足所述Filters查詢條 件的查詢結(jié)果,并將所述查詢結(jié)果發(fā)送至客戶端。
[0016] 本發(fā)明還提供了一種基于HBase的全文檢索方法,包括:
[0017] 客戶端向服務(wù)器端發(fā)送查詢請(qǐng)求,所述查詢請(qǐng)求攜帶查詢條件,以使服務(wù)器端利 用Solr引擎獲取針對(duì)所述查詢條件進(jìn)行全文檢索的檢索結(jié)果;
[0018] 接收服務(wù)器端返回的所述檢索結(jié)果。
[0019] 優(yōu)選地,
[0020] 進(jìn)一步包括:客戶端向服務(wù)器端發(fā)送Put對(duì)象,所述Put對(duì)象包括待索引的 KeyValue集合,以使服務(wù)器端針對(duì)KeyValue集合中每一個(gè)KeyValue值構(gòu)建Document對(duì) 象,并將構(gòu)建的Document對(duì)象寫入Solr引擎中;
[0021] 或,
[0022] 進(jìn)一步包括:所述檢索結(jié)果中包括滿足所述查詢條件的RowKey值;
[0023] 進(jìn)一步包括:客戶端根據(jù)所述檢索結(jié)果以及Filters查詢條件構(gòu)建Get查詢對(duì)象; 并將構(gòu)建的Get查詢對(duì)象發(fā)送至服務(wù)器端,以使服務(wù)器端根據(jù)所述Get查詢對(duì)象在所述檢 索結(jié)果中查找滿足所述Filters查詢條件的查詢結(jié)果;并接收服務(wù)器端發(fā)送的查詢結(jié)果;
[0024] 或,
[0025] 進(jìn)一步包括:客戶端通過調(diào)用HSearchTable對(duì)象向服務(wù)器端發(fā)送所述查詢請(qǐng)求。
[0026] 本發(fā)明還提供了一種服務(wù)器,包括:
[0027] 擴(kuò)展單元,用于將HBase與Solr引擎相連接,擴(kuò)展Solr EndPoint對(duì)象,預(yù)先將 HBase中待檢索的KeyValue值所針對(duì)的索引內(nèi)容存儲(chǔ)至Solr引擎中;
[0028] 接收單元,用于接收客戶端發(fā)送的查詢請(qǐng)求,所述查詢請(qǐng)求攜帶查詢條件;
[0029] 轉(zhuǎn)發(fā)單元,用于調(diào)用Solr EndPoint對(duì)象,Solr EndPoint對(duì)象將所述查詢請(qǐng)求轉(zhuǎn) 發(fā)至Solr引擎,以使Solr引擎根據(jù)所述查詢條件對(duì)索引內(nèi)容進(jìn)行全文檢索;
[0030] 發(fā)送單元,用于利用Solr EndPoint對(duì)象接收Solr引擎返回的檢索結(jié)果,并將所 述檢索結(jié)果發(fā)送至客戶端。
[0031] 優(yōu)選地,
[0032] 所述擴(kuò)展單元,用于擴(kuò)展Solr Coprocessor對(duì)象和HSearchTable對(duì)象,預(yù)先定義 Solr索引配置和HBase索引配置,所述Solr索引配置用于限定存儲(chǔ)至Solr引擎中的索引 內(nèi)容,所述HBase索引配置用于指示索引內(nèi)容存儲(chǔ)在Solr引擎的位置;
[0033] 所述擴(kuò)展單元,用于服務(wù)器端接收客戶端利用HSearchTable對(duì)象發(fā)送的Put 對(duì)象,所述Put對(duì)象包括待索引的KeyValue集合;調(diào)用Solr Coprocessor對(duì)象,Solr Coprocessor對(duì)象根據(jù)所述Solr索引配置所限定的索引內(nèi)容,遍歷所述Put對(duì)象所包括待 索引的KeyValue集合,為KeyValue集合中每一個(gè)KeyValue值構(gòu)建Document對(duì)象;根據(jù)所 述HBase索引配置針對(duì)每一個(gè)Document對(duì)象所指不存儲(chǔ)在Solr引擎的位置,將構(gòu)建的每 一個(gè)Document對(duì)象寫入Solr引擎中的相應(yīng)位置中。
[0034] 優(yōu)選地,
[0035] 進(jìn)一步包括:所述檢索結(jié)果中包括滿足所述查詢條件的RowKey值;
[0036] 所述接收單元,用于接收客戶端根據(jù)所述檢索結(jié)果以及Filters查詢條件發(fā)送的 Get查詢對(duì)象;根據(jù)所述Get查詢對(duì)象,在所述檢索結(jié)果中查找滿足所述Filters查詢條件 的查詢結(jié)果,并將所述查詢結(jié)果發(fā)送至客戶端。
[0037] 本發(fā)明還提供了一種客戶端,包括:
[0038] 發(fā)送單元,用于向服務(wù)器端發(fā)送查詢請(qǐng)求,所述查詢請(qǐng)求攜帶查詢條件,以使服務(wù) 器端利用Solr引擎獲取針對(duì)所述查詢條件進(jìn)行全文檢索的檢索結(jié)果;
[0039] 接收單元,用于接收服務(wù)器端返回的所述檢索結(jié)果。
[0040] 優(yōu)選地,
[0041] 所述發(fā)送單元,用于向服務(wù)器端發(fā)送Put對(duì)象,所述Put對(duì)象包括待索引的 KeyValue集合,以使服務(wù)器端針對(duì)KeyValue集合中每一個(gè)KeyValue值構(gòu)建Document對(duì) 象,并將構(gòu)建的Document對(duì)象寫入Solr引擎中;
[0042] 或,
[0043] 進(jìn)一步包括:所述檢索結(jié)果中包括滿足所述查詢條件的RowKey值;
[0044] 所述發(fā)送單元,用于根據(jù)所述檢索結(jié)果以及Filters查詢條件構(gòu)建Get查詢對(duì)象; 并將構(gòu)建的Get查詢對(duì)象發(fā)送至服務(wù)器端,以使服務(wù)器端根據(jù)所述Get查詢對(duì)象在所述檢 索結(jié)果中查找滿足所述Filters查詢條件的查詢結(jié)果;并接收服務(wù)器端發(fā)送的查詢結(jié)果;
[0045] 或,
[0046] 所述發(fā)送單元,用于通過調(diào)用HSearchTable對(duì)象向服務(wù)器端發(fā)送所述查詢請(qǐng)求。
[0047] 本發(fā)明實(shí)施例提供了一種基于HBase的全文檢索方法及裝置,由于HBase中只利 用Filters查詢條件進(jìn)行查詢的效率較低,本發(fā)明實(shí)施例可以將HBase與Solr引擎相連 接,使得在進(jìn)行全文檢索時(shí),HBase的服務(wù)器端將全文檢索的查詢請(qǐng)求轉(zhuǎn)發(fā)至Solr引擎, 由Solr引擎進(jìn)行全文檢索,由于Solr引擎在進(jìn)行全文檢索時(shí)速度較快,因此提高了查詢效 率。
【附圖說明】
[0048] 圖1是本發(fā)明實(shí)施例提供的方法流程圖;
[0049] 圖2是本發(fā)明另一實(shí)施例提供的方法流程圖;
[0050] 圖3是本發(fā)明又一實(shí)施例提供的方法流程圖;
[0051] 圖4是本發(fā)明實(shí)施例提供的全文檢索架構(gòu)圖;
[0052] 圖5是本發(fā)明實(shí)施例提供的索引構(gòu)建流程圖;
[0053] 圖6是本發(fā)明實(shí)施例提供的全文檢索流程圖;
[0054] 圖7是本發(fā)明實(shí)施例提供的客戶端結(jié)構(gòu)示意圖;
[0055] 圖8是本發(fā)明實(shí)施例提供的服務(wù)器結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0056] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述。顯然,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本 發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí) 施例,都屬于本發(fā)明保護(hù)的范圍。
[0057] 如圖1所示,本發(fā)明實(shí)施例提供了一種基于HBase的全文檢索方法,將HBase與 Solr引擎相連接,擴(kuò)展Solr EndPoint對(duì)象,預(yù)先將HBase中待檢索的KeyValue值所針對(duì) 的索引內(nèi)容存儲(chǔ)至Solr引擎中;該方法可以包括以下步驟:
[0058] 步驟101 :服務(wù)器端接收客戶端發(fā)送的查詢請(qǐng)求,所述查詢請(qǐng)求攜帶查詢條件。
[0059] 步驟102 :服務(wù)器端調(diào)用Solr EndPoint對(duì)象,Solr