导航电子地图数据中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字符。


作者简介


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值