最近读完chen 写的一篇文章关于publish/subscribe system中的空间文本内容匹配的文章。以下是对读完之后的一个总结。
随着大量的空间文本内容的通过移动设备产生,如微博、带有地理信息的照片,签到等,空间文本内容查询变的越来越重要,面对巨大的空间文本数据,如何能够高效找到查询结果并返回给用户是一个非常大的挑战。因此作者设计了一个系统SOPS(Spatial Keyword Publish/Subscrible)可以高效实现空间内容连续查询。本文中,作者提出以解决以下两种类型的索引方法:
(1)BRC(Boolean Range Continuous) Query
(2)TaSK(Temporal Spatial Keyword Top-k Continuous) Query
因为每时每刻都会有大量的空间文本内容产生,当然用户希望能实时更新自己感兴趣的内容,这就要求Server System能够实时高效的处理实时产生的文本数据流,从中找到能够匹配用户兴趣的文本信息,并且将这些信息推送给用户。
BRC: 主要由两个部分组成布尔表达式和空间区域,因为我们需要找到落在这个区域内的并且能文本内容能够满足布尔表达式约束的所有空间文本信息,再次过程中我们 需要按照一定的排序原则对这些符合条件的空间文本信息进行排序,选择其中某一部分排名较高的内容,即相关性得分较高。
TaSK: 在现实生活中,用户总是希望能够实时更新内容,得到自己关心事情的最新的消息,因此我们需要结合另外一种查询类型,该查询类型中包含了三个部分:1.文本相关性 2.空间相关性 3.时间相关性 。
因为微博,签到等信息都是实时产生的,因此我们需要一个动态的索引来不停的更新这些后来产生的内容,同时需要连续的查询更新后的内容,因此上述两种类型都可以满足实时的位用户更新内容。为了高效实现以上两种查询,作者设计了SOPS系统利用IQ-Tree(Inverted File Quad-Tree)动态索引实现以上两种类型实时查询。
SOPS系统框架图:
Figure 1:为系统的框架图,该系统利用服务器-浏览器模型。用户通过浏览器向服务器提交查询,服务发送查询结果给用户。从图中可以看出,IQ-Tree可以实时连续接收空间文本流并且跟新到索引结构中,系统会通过遍历IQ-Tree来查找符合条件的结果,并返回给用户。
其中IQ-Tree的具体索引结构以及实现都可以参考一下文献:
An efficient query indexing mechanism for filtering geo-textual data