本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種poi數(shù)據(jù)檢索方法及裝置。
背景技術(shù):
目前,越來越多的用戶在電子地圖中查詢poi(pointofinterest,興趣點),數(shù)據(jù)庫中存儲的poi數(shù)據(jù)為poi查詢提供數(shù)據(jù)支撐。
現(xiàn)有技術(shù)中,將母庫poi數(shù)據(jù)存儲到支持海量存儲的oracle數(shù)據(jù)庫中,通過建立索引,執(zhí)行對poi數(shù)據(jù)的查詢、刪除、備份等操作。也有將母庫poi數(shù)據(jù)存儲到mangodb數(shù)據(jù)庫中,并僅在mangodb數(shù)據(jù)庫中執(zhí)行對poi數(shù)據(jù)的查詢操作。
但是,上述兩種數(shù)據(jù)庫查詢poi數(shù)據(jù)的效率較低。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種poi數(shù)據(jù)檢索方法及裝置,在保證檢索poi數(shù)據(jù)準確性的同時,提高了查詢poi數(shù)據(jù)的效率。
一方面,本發(fā)明實施例提供了一種poi數(shù)據(jù)檢索方法,包括:
接收用戶輸入的poi的位置信息;
根據(jù)所述poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù)據(jù)庫中執(zhí)行查詢操作;
根據(jù)mangodb的查詢結(jié)果,在lucene中建立索引,并進行全文檢索,得到目標poi。
在所述接收用戶輸入的poi的位置信息之前,還包括:
將poi母庫數(shù)據(jù)導(dǎo)入到mangodb數(shù)據(jù)庫中。
所述根據(jù)所述poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù) 據(jù)庫中執(zhí)行查詢操作包括:
在mangodb數(shù)據(jù)庫中建立以所述poi的位置信息為圓心,以所述預(yù)設(shè)的查詢距離為半徑的數(shù)據(jù)緩沖區(qū);
在所述數(shù)據(jù)緩沖區(qū)中查詢poi數(shù)據(jù)。
在所述根據(jù)所述poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù)據(jù)庫中執(zhí)行查詢操作之后還包括:
計算所查詢到的位置信息與所述poi的位置信息之間的距離;
按照所述距離從小到大的順序輸出查詢結(jié)果。
所述poi母庫中的位置數(shù)據(jù)由gdal開源庫將所述位置數(shù)據(jù)轉(zhuǎn)換成bson格式插入到mangodb數(shù)據(jù)庫中。另一方面,本發(fā)明實施例還提供了一種poi數(shù)據(jù)檢索裝置,用于執(zhí)行上述poi數(shù)據(jù)檢索方法,所述裝置包括:
接收模塊,用于接收用戶輸入的poi的位置信息;
查詢模塊,用于根據(jù)所述poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù)據(jù)庫中執(zhí)行查詢;
目標poi獲取模塊,用于根據(jù)mangodb的查詢結(jié)果,在lucene中建立索引,并進行全文檢索,得到目標poi。
所述裝置還包括導(dǎo)入模塊,
所述導(dǎo)入模塊用于將poi母庫數(shù)據(jù)導(dǎo)入到mangodb數(shù)據(jù)庫中。
所述查詢模塊包括:
數(shù)據(jù)緩沖區(qū)建立模塊,用于在mangodb數(shù)據(jù)庫中建立以所述poi的位置信息為圓心,以所述預(yù)設(shè)的查詢距離為半徑的數(shù)據(jù)緩沖區(qū);
執(zhí)行模塊,用于在所述數(shù)據(jù)緩沖區(qū)建立模塊建立的數(shù)據(jù)緩沖區(qū)中,執(zhí)行查詢poi數(shù)據(jù)的步驟。
所述裝置還包括:
計算模塊,用于計算所查詢到的位置信息與所述poi的位置信息的距離;
輸出模塊,用于按照所述距離從小到大的順序輸出查詢結(jié)果。
所述裝置還包括:
轉(zhuǎn)換模塊,用于將所述poi母庫中的位置數(shù)據(jù)由gdal開源庫將所述位置數(shù)據(jù)轉(zhuǎn)換成bson格式插入到mangodb數(shù)據(jù)庫中。
本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索方法及裝置,充分運用了mangodb數(shù)據(jù)庫對空間數(shù)據(jù)查詢的支持,以及l(fā)ucene對全文檢索的支持,將兩者的優(yōu)勢結(jié)合起來,提高了poi數(shù)據(jù)查詢的效率。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1為本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索方法的流程示意圖;
圖2為本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索方法的創(chuàng)建索引流程圖;
圖3為本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索方法的全文檢索的處理流程圖;
圖4為本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索裝置的結(jié)構(gòu)示意圖。
具體實施方式
如在說明書及權(quán)利要求當中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準則。如在通篇說明書及權(quán)利要求當中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達到所述技術(shù)效果。本發(fā)明的保護范圍當視所附權(quán)利要求所界定者為準。
每個poi包含四個方面的信息:名稱,類別,經(jīng)度,緯度,其中類別又分為大類,小類,比如poi數(shù)據(jù)包含100:餐飲服務(wù),200:公共設(shè)施,300:公司企業(yè),400:購物服務(wù),500:交通設(shè)施服務(wù),600:金融保險服務(wù),700: 科教文化服務(wù)等等大類,而在600:金融保險服務(wù)下又包含601:保險公司,602:金融保險服務(wù)機構(gòu),603:銀行,604:銀行相關(guān),605:證券公司,606:自動提款機等小類。
如圖1所示,本發(fā)明實施例提供的一種poi數(shù)據(jù)檢索方法包括:
s100:接收用戶輸入的位置信息。
這里所說的位置信息一般指的是poi的經(jīng)度和緯度信息,也就是poi的地理坐標。
s200:根據(jù)poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù)據(jù)庫中,執(zhí)行查詢操作。
在該步驟中,具體的查詢操作步驟包括:
s210:在mangodb數(shù)據(jù)庫中建立以poi的位置信息為圓心,以預(yù)設(shè)的查詢距離為半徑的數(shù)據(jù)緩沖區(qū);
s220:在建立的數(shù)據(jù)緩沖區(qū)中查詢poi數(shù)據(jù)。
比如,輸入的poi位置信息,也就是地理坐標為:113.332205°e,23.156263°n。預(yù)設(shè)的查詢距離為1000米,則建立以113.332205°w,23.156263°n為圓心,以1000米為半徑的一個數(shù)據(jù)緩沖區(qū),在建立的數(shù)據(jù)緩沖區(qū)中查詢poi數(shù)據(jù)具體為:遍歷所建立的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)。
具體查詢方法如下:
db.lbs.find({loc:{$near:{$geometry:{type:″point″,coordinates:[113.332205,23.156263]},$maxdistance:1000}}})
其中,lbs(locationbasedservice,基于位置的服務(wù))是mangodb數(shù)據(jù)庫的一個表。
在本發(fā)明實施例中,執(zhí)行步驟s200之前還包括:將poi母庫數(shù)據(jù)導(dǎo)入到mangodb數(shù)據(jù)庫中,導(dǎo)入到mangodb數(shù)據(jù)庫的字段包括:id,name,kind,address,tel,x,y,citycode,除了坐標x,y之外的字段id,name,kind,address,tel,citycode可以直接插入到mangodb,而因為地理坐標是二維結(jié)構(gòu),需要按照二維結(jié)構(gòu)存儲到mangodb數(shù)據(jù)庫中, 因此地理坐標x,y需要利用gdal開源庫將poi的x,y字段轉(zhuǎn)換成bson格式插入到mangodb中。具體轉(zhuǎn)換方法如下:
將母庫poi導(dǎo)入到mangodb數(shù)據(jù)庫中之后,需要建立索引,索引分為普通索引和空間索引,一般情況下,除地理坐標x,y之外的字段建立普通索引,地理坐標建立空間索引,普通索引如:db.lbs.ensureindex({name:1}),空間索引如:db.lbs.ensureindex({loc:″2dsphere″}),這里建立索引的目的是為了后續(xù)的查詢能夠快速進行。
在步驟s220中,可選地,將查詢結(jié)果按照距離所接收的poi的位置信息由近及遠輸出,具體操作步驟為:
s221:計算所查詢到的位置信息與poi的位置信息之間的距離;
s222:按照距離從小到大的順序輸出查詢結(jié)果。
可選地,輸出查詢結(jié)果的格式為json格式,然后從json格式的輸出結(jié)果中解析出id,name,kind,address,tel,x,y,citycode等字段,解析完畢后,執(zhí)行步驟s300:根據(jù)mangodb的查詢結(jié)果,在lucene中建立索引,并進行全文檢索,得到目標poi。在該步驟中,首先按照lucene的索引機制建立內(nèi)存索引庫,具體執(zhí)行為:
因為在該步驟中,直接利用lucene進行全文檢索,而不再需要執(zhí)行空間查詢的步驟,因此沒有必要把地理坐標存儲到內(nèi)存數(shù)據(jù)庫了。具體地,如圖2所示,創(chuàng)建索引的流程為首先將字符串string輸入分詞器analyzer進行分析,也就是對字符串string進行分詞,將字符串分成多個字段field,將分成的多個字段field組合成一個文檔document,也就是說,文檔document包含了mangodb數(shù)據(jù)庫的查詢結(jié)果中的各個字段,比如id,name,kind等字段,然后通過索引創(chuàng)建器indexwriter將文檔document寫入到內(nèi)存中,形成目錄directory,生成內(nèi)存索引數(shù)據(jù)庫。
經(jīng)過mangodb數(shù)據(jù)庫的初步查詢,即空間數(shù)據(jù)查詢之后,已經(jīng)縮小了poi數(shù)據(jù)檢索的范圍,再通過lucene的全文檢索,便可得到目標poi數(shù)據(jù)。舉例來說,如果檢索“北京四維圖新科技股份有限公司″,按照一般的文檢索的步驟如圖3所示,全文檢索的優(yōu)勢就在于對整個字符串進行分析檢索,并計算各個部分的權(quán)重,選出最相似的poi。例如,全文檢索“北京四維圖新科技股份有限公司”,按照非全文檢索的分詞算法,可檢索“北京”,“四維”,“圖”,“新”,“科技”,“股份”,“有限”,“公司”等關(guān)鍵字,因為“圖新”一般認為是未登陸詞,所以一般的非全文檢索的索引智能按照單個字分詞,而在lucene中,則會根據(jù)每條poi含有以上關(guān)鍵詞的數(shù)量、包含順序、關(guān)鍵詞出現(xiàn)位置等計算出所檢索到的數(shù)據(jù)和需要檢索的poi數(shù)據(jù)之間的相似度,并按照相似度的大小排序給出檢索結(jié)果。由上述實施例可以看出,本發(fā)明實施例提供的poi數(shù)據(jù)檢索方法,充分運用了mangodb數(shù)據(jù)庫對空間數(shù)據(jù)查詢的支持,以及l(fā)ucene對全文檢索的支持,將兩者的優(yōu)勢結(jié)合起來,提高了poi數(shù)據(jù)查詢的效率。
基于相同的發(fā)明構(gòu)思,本申請還提供了一種poi數(shù)據(jù)檢索裝置,包括:接收模塊410,用于接收用戶輸入的poi的位置信息;查詢模塊420,用于根據(jù)poi的位置信息,以及預(yù)設(shè)的查詢距離,在mangodb數(shù)據(jù)庫中執(zhí)行查詢;目標poi獲取模塊430,用于根據(jù)mangodb的查詢結(jié)果,在lucene中建立索引,并進行全文檢索,得到目標poi。
優(yōu)選地,前述的poi數(shù)據(jù)檢索裝置還包括導(dǎo)入模塊,用于將poi母庫數(shù)據(jù)導(dǎo)入到mangodb數(shù)據(jù)庫中。
優(yōu)選地,前述的poi數(shù)據(jù)檢索裝置中的查詢模塊420還包括數(shù)據(jù)緩沖區(qū)模塊,用于在mangodb數(shù)據(jù)庫中建立以poi的位置信息為圓心,以預(yù)設(shè)的查詢距離為半徑的數(shù)據(jù)緩沖區(qū);執(zhí)行模塊,用于在數(shù)據(jù)緩沖區(qū)建立模塊建立的數(shù)據(jù)緩沖區(qū)中,執(zhí)行查詢poi數(shù)據(jù)的步驟。
優(yōu)選地,前述poi數(shù)據(jù)檢索裝置還包括計算模塊,用于計算所查詢到的位置信息與poi的位置信息的距離;輸出模塊,用于按照距離從小到大的順序輸出查詢結(jié)果。
優(yōu)選地,前述的poi數(shù)據(jù)檢索裝置,還包括轉(zhuǎn)換模塊,用于將poi母庫中的位置數(shù)據(jù)由gdal開源庫將位置數(shù)據(jù)轉(zhuǎn)換成bson格式插入到mangodb數(shù)據(jù)庫中。
由上述實施例可以看出,本發(fā)明實施例提供的poi數(shù)據(jù)檢索裝置,用以實現(xiàn)poi數(shù)據(jù)檢索方法,充分運用了mangodb數(shù)據(jù)庫對空間數(shù)據(jù)查詢的支持,以及l(fā)ucene對全文檢索的支持,將兩者的優(yōu)勢結(jié)合起來,提高了poi數(shù)據(jù)查詢的效率。
上述說明示出并描述了本發(fā)明的若干優(yōu)選實施例,但如前所述,應(yīng)當理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。