導航電子地圖數據中POI搜索技術原理之二

導航電子地圖數據中POI搜索技術原理之二

支持任意檢索


 

《淺談導航數據中POI搜索技術原理》一文介紹了導航電子地圖中POI興趣點數據進行關鍵字檢索的基本原理。

其中,數據的組織方式如下:


圖1

 

當用戶僅僅輸入單個字符Key1的時候,通過查找索引表,獲取對用的偏移表,然後取到包含Key1的所有POI數據。

 

但是,當用戶輸入兩個或者兩個以上的字符的時候,如果依然基於《淺談導航數據中POI搜索技術原理》文中的數據組織方式,檢索的過程如下(這裏以兩個字符爲例):


通過對Key1和Key2的檢索,分別得到兩個offset的集合S1和S2。


對S1和S2求交集,就獲取了所有包含Key1和Key2的POI對應的offset。

 

但是,對於用戶而言,可能用戶僅僅希望檢索到類似“*Key1 Key2*”方式排列的POI,而不希望檢索到類似“* Key2Key1*”方式排列的POI。例如,當用戶輸入“北京”來進行檢索的時候,用戶期望出現的是類似“北京大學”、“北京火車站”等類似的POI,而不是期望出現“京北駕校”、“京北職業技術學院”等類似的POI。針對此類問題,改如何設計一個合適的數據組織方式來對應呢?

    這裏,基於《淺談導航數據中POI搜索技術原理》文中的數據組織方式,稍微做一定的優化,即可解決此方面的問題:

OffsetTable

index

Address in binary file

Pos

1

POI Address

A

2

POI Address

B

……

……

^

N

POI Address

C

 

    這裏,Pos表示的是Key字符在POI的字符串中,所處的位置。例如,“京”在“北京大學”中的位置是2。

如此的話,在檢索“Key1 Key2”的時候,通過對Key1和Key2的檢索,分別得到兩個offset的集合S1和S2。

在對S1和S2求交集的時候,通過使用Pos來進行約束,這樣,就可以約束到僅僅查詢類似“*Key1 Key2*”方式排列的POI。

 

小結一下,經過改善之後的設計,有以下兩個特點:

1 當輸入“Key1 Key2”的時候,能過濾掉包含“Key2Key1”的POI字符,僅僅檢索包含“Key1 Key2”的POI名稱;

2 當輸入“Key1 Key2”的時候,能檢索到包含“****Key1 ****Key2****”模式的POI字符。


作者簡介


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章