一种索引建立方法和系统、搜索方法和系统的制作方法

文档序号:6436800阅读:188来源:国知局
专利名称:一种索引建立方法和系统、搜索方法和系统的制作方法
技术领域
本发明涉及文本搜索技术领域,尤其涉及一种索引建立方法和系统、搜索方法和系统。
背景技术
在搜索领域,建立倒排表作为文本搜索的索引,这几乎已成为业界的一种标准方法。随着基于位置服务(LBS,Location Based Service)的应用逐渐兴起,对空间索引的需求也越来越强烈。用户经常需要查询在一定距离范围的匹配结果。目前多采用空间索引与关键词索引分别建立的方法,相互过滤,即空间索引和关键词索引分别建立,搜索时,先在空间索引库里找到满足条件的结果,再在关键词索引库里找到满足条件的结果,最后进行结果的归并。现有技术的这种搜索方案,由于需要建立多个索引,并进行多次搜索,因此存在数据传输量大,计算量大的问题。

发明内容
有鉴于此,本发明的主要目的在于提供一种索引建立方法和系统、搜索方法和系统,以解决现有技术中的搜索方法存在的数据传输量大,计算量大的问题。为达到上述目的,本发明的技术方案是这样实现的:本发明提供了一种索引建立方法,该方法包括:对每个输入样本中的样本关键词进行分词处理得到索引关键词;根据每个输入样本中的地标值分别计算对应的排序因子;以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,相同的排序因子所对应的地标值聚集在一起。所述排序因子为空间索引与其他顺序影响因子的组合值,所述空间因子是根据所述地标值计算得到的,所述其他顺序影响因子根据具体业务需求确定。ScoreVal = SpacelD+OhterVal/1000.0, SpaceID = X*100000+Y ;其中,ScoreVal表示所述排序因子,SpaceID表示所述空间因子,OhterVal表示所述其他顺序影响因子;X表示地标横坐标的公里值,小数部分向下取整;Y表示地标纵坐标的公里值,小数部分向下取整。本发明还提供了一种索引建立系统,该系统包括:分词模块、排序因子计算模块和倒排表建立模块,其中,所述分词模块,用于对每个输入样本中的样本关键词进行分词处理得到索引关键词;所述排序因子计算模块,用于根据每个输入样本中的地标值分别计算对应的排序因子;所述倒排表建立模块,用于以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,将相同的排序因子所对应的地标值聚集在一起。所述排序因子计算模块进一步用于,将空间索引与其他顺序影响因子的组合值作为排序因子,其中,所述空间因子由所述排序因子计算模块根据所述地标值计算得到,所述其他顺序影响因子由所述排序因子计算模块根据具体业务需求确定。ScoreVal = SpacelD+OhterVal/1000.0, SpaceID = X*100000+Y ;其中,ScoreVal表示所述排序因子,SpaceID表示所述空间因子,OhterVal表示所述其他顺序影响因子;X表示地标横坐标的公里值,小数部分向下取整;¥表示地标纵坐标的公里值,小数部分向下取整。本发明还提供了一种搜索方法,该方法包括:对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词;根据搜索请求中的地标值和搜索半径计算对应的排序因子;查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。ScoreVal = ((Xo+i)*100000)+Yo+j,其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)彡i彡(n-1), j = - (n-1)或j = n_l。在查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果之后,该方法进一步包括:去除搜索结果中的重复地标值。本发明还提供了一种搜索系统,该系统包括:搜索分词模块、搜索排序因子计算模块和搜索模块,其中,所述搜索分词模块,用于对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词;所述搜索排序因子计算模块,用于根据搜索请求中的地标值和搜索半径计算对应的排序因子;所述搜索模块,用于查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。所述搜索排序因子计算模块进一步用于,通过以下公式计算排序因子:ScoreVal = ((Xo+i)*100000)+Yo+j其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)≤i≤(n-1), j = - (n-1)或j = n_l。所述搜索模块进一步用于,在查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果之后,去除搜索结果中的重复地标值。本发明所提供的一种索引建立方法和系统、搜索方法和系统,将地标值通过一定计算,成为倒排表建立时的排序因子,使得查询时只取具有某一范围内排序因子的地标值,这样可以一次性获得所需数据,大大减少处理查询结果的数据量、减少计算时间,从而提高系统吞吐量。


图1为本发明实施例的一种索引建立方法的流程图;图2为本发明实施例中倒排表的一种存储方式的不意图;图3为本发明实施例中倒排表的另一种存储方式的示意图;图4为本发明实施例的一种索引建立系统的结构示意图;图5为本发明实施例的一种搜索方法的流程图;图6为本发明实施例的搜索半径的示意图;图7为本发明实施例的一种搜索系统的结构示意图。
具体实施例方式下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。本发明实施例所提供的一种索引建立方法如图1所示,主要包括以下步骤:步骤101,对每个输入样本中的样本关键词进行分词处理得到索引关键词。输入样本中包括样本关键词及其对应的地标值,如:输入样本为“中关村,(110,220)”,其中,“中关村”为关键词,(110,220)为“中关村”的地标值。有些样本关键词进行分词处理得到一个索引关键词,该索引关键词与所述样本关键词相同;有些样本关键词进行分词处理得到多个索引关键词,这些索引关键词共同构成所述样本关键词。步骤102,根据每个输入样本中的地标值分别计算对应的排序因子。所述排序因子可以为空间索引与其他顺序影响因子的组合值,所述空间因子是根据所述地标值计算得到的,所述其他顺序影响因子根据具体业务需求确定。较佳的,可以通过以下方式计算排序因子:ScoreVal = SpaceID+0hterVal/1000.0,SpaceID = X*100000+Y其中,ScoreVal表示排序因子,SpaceID表示空间因子,OhterVal表示其他顺序影响因子,OhterVal的通常取值为小于或等于四位有效数字的整数;X表示地标横坐标的公里值,小数部分向下取整;Y表示地标纵坐标的公里值,小数部分向下取整。较佳的,在本发明实施例的数据库中,所有地标的坐标值均小于99999公里。步骤103,以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,相同的排序因子所对应的地标
值聚集在一起。作为本发明的一种实现方式,可以采用Redis库的Sorted Set(有序链表)存储各索引项,该存储结构是以字符串为关键词的hash (哈希),hash的value (取值)部分为有序数组。基于网格索引的思想,建立的倒排表的存储方式如图2所示,即每个关键词下对应一个有序数组,数组内部,相同网格的地标会聚在一起,在图2中,阴影部分不同即表示地标网格不同。作为本发明的另一种实现方式,也可以采用如图3所示的二级hash链表来存储各索引项,在图3中,每个关键词下相同SpaceID的地标值(TagID)会聚在一起。对应上述索引建立方法,本发明的实施例还提供了一种索引建立系统,如图4所示,该系统包括:分词模块401、排序因子计算模块402和倒排表建立模块403。其中,分词模块401,用于对每个输入样本中的样本关键词进行分词处理得到索引关键词。排序因子计算模块402,用于根据每个输入样本中的地标值分别计算对应的排序因子。倒排表建立模块403,用于以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,将相同的排序因子所对应的地标值聚集在一起。较佳的,排序因子计算模块402进一步用于,将空间索引与其他顺序影响因子的组合值作为排序因子,其中,所述空间因子由排序因子计算模块402根据所述地标值计算得到,所述其他顺序影响因子由排序因子计算模块402根据具体业务需求确定。基于前述建立的倒排表,本发明的实施例还提供了一种搜索方法,如图5所示,主要包括:步骤501,对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词。 在LBS应用中,常见的搜索需求为搜索某个坐标周边n公里内,满足特定关键词的地标值;搜索请求中通常包含:当前地标的横坐标Xo、当前地标的纵坐标Yo、搜索半径n(即搜索当前地标的周边n公里)、搜索关键词K。对搜索关键词K进行分词处理,得到结果 K1、K2、 、Km。实际应用中,在要求不严 格的条件下,搜索某地标的周边I公里,则只搜索该地标所在网格的地标即可;在要求严格的条件下,搜索某地标的周边I公里,则需要该地标所在网格及周边网格的地标,然后再进行过滤筛查。如图6所示,搜索地标a周边I公里范围内的地标,在要求不严格的条件下,即搜索网格E内地标;在要求严格的条件下,即搜索网格A— I内的地标。后续按照要求不严格的条件进行说明。步骤502,根据搜索请求中的地标值和搜索半径计算对应的排序因子。较佳的,可以采用以下公式计算排序因子:ScoreVal = ((Xo+i)*100000)+Yo+j其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)彡i彡(n-1), j = - (n-1)或j = n_l。步骤503,查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。分别搜索关键词Kl、K2.....Km对应倒排表中的索引项,将满足下式的ScoreVal
所对应的地标志作为搜索结果:((Xo+i) *100000)+Yo-n+1 ( ScoreVal ( ((Xo+i)*100000)+Yo+n-1其中,-(n-1) ( i ( (n-1)。较佳的,在得到上述搜索结果之后,还可以对其进行排重处理,即去除搜索结果中的重读地标值。需要指出的是,如果按照要求严格的条件进行搜索,那么计算排序因子时,在公式ScoreVal = ((Xo+i) *100000)+Yo+j 中,_n < i < n,j = _n 或 j = n ;
满足下式的ScoreVal所对应的地标志作为搜索结果:((Xo+i)*100000)+Yo-n ( ScoreVal ( ((Xo+i)*100000)+Yo+n其中,-n≤ i ≤n。对应上述搜索方法,本发明的实施例还提供了一种搜索系统,如图7所示,主要包括:搜索分词模块701、搜索排序因子计算模块702和搜索模块703。其中,搜索分词模块701,用于对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词。搜索排序因子计算模块702,用于根据搜索请求中的地标值和搜索半径计算对应的排序因子。搜索模块703,用于查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。较佳的,搜索排序因子计算模块702进一步用于,通过以下公式计算排序因子:ScoreVal = ((Xo+i)*100000)+Yo+j,其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)≤i≤(n-1), j = - (n-1)或j = n-l。较佳的,搜索模块703进一步用于,在查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果之后,去除搜索结果中的重复地标值。综上所述,通过本发明实施例的索引建立方法和系统、搜索方法和系统,将地标值通过一定计算,成为倒排表建立时的排序因子,使得查询时只取具有某一范围内排序因子的地标值,这样可以一次性获得所需数据,大大减少处理查询结果的数据量、减少计算时间,从而提高系统吞吐量。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种索引建立方法,其特征在于,该方法包括: 对每个输入样本中的样本关键词进行分词处理得到索引关键词; 根据每个输入样本中的地标值分别计算对应的排序因子; 以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,相同的排序因子所对应的地标值聚集在一起。
2.根据权利要求1所述索引建立方法,其特征在于,所述排序因子为空间索引与其他顺序影响因子的组合值,所述空间因子是根据所述地标值计算得到的,所述其他顺序影响因子根据具体业务需求确定。
3.根据权利要求2所述索引建立方法,其特征在于,ScoreVal=SpacelD+OhterVal/lOO0.0,SpaceID = X*100000+Y ; 其中,ScoreVal表示所述排序因子,SpaceID表示所述空间因子,OhterVal表示所述其他顺序影响因子;X表示地标横坐标的公里值,小数部分向下取整;Y表示地标纵坐标的公里值,小数部分向下取整。
4.一种索引建立系统,其特征在于,该系统包括:分词模块、排序因子计算模块和倒排表建立模块,其中, 所述分词模块,用于对每个输入样本中的样本关键词进行分词处理得到索引关键词; 所述排序因子计算模块,用于根据每个输入样本中的地标值分别计算对应的排序因子;所述倒排表建立模块,用于以索引关键词为索引建立倒排表,所述倒排表中的各索引项包括与所述索引关键词相对应的排序因子和地标值,且在各索引项中,将相同的排序因子所对应的地标值聚集在一起。
5.根据权利要求4所述索引建立系统,其特征在于,所述排序因子计算模块进一步用于,将空间索引与其他顺序影响因子的组合值作为排序因子, 其中,所述空间因子由所述排序因子计算模块根据所述地标值计算得到,所述其他顺序影响因子由所述排序因子计算模块根据具体业务需求确定。
6.根据权利要求5所述索引建立系统,其特征在于,ScoreVal=SpaceID+0hterVal/1000.0,SpaceID = X*100000+Y ; 其中,ScoreVal表示所述排序因子,SpaceID表示所述空间因子,OhterVal表示所述其他顺序影响因子;X表示地标横坐标的公里值,小数部分向下取整;Y表示地标纵坐标的公里值,小数部分向下取整。
7.一种搜索方法,其特征在于,该方法包括: 对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词; 根据搜索请求中的地标值和搜索半径计算对应的排序因子; 查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。
8.根据权利要求7所述搜索方法,其特征在于,ScoreVal= ((Xo+i)*100000)+Yo+j, 其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)≤ i ≤(n-1), j = -(n-1)或 j = n_l。
9.根据权利要求7或8所述搜索方法,其特征在于,在查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果之后,该方法进一步包括: 去除搜索结果中的重复地标值。
10.一种搜索系统,其特征在于,该系统包括:搜索分词模块、搜索排序因子计算模块和搜索模块,其中, 所述搜索分词模块,用于对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词; 所述搜索排序因子计算模块,用于根据搜索请求中的地标值和搜索半径计算对应的排序因子; 所述搜索模块,用于查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。
11.根据权利要求10所述搜索系统,其特征在于,所述搜索排序因子计算模块进一步用于,通过以下公式计算排序因子:ScoreVal = ((Xo+i)*100000)+Yo+j 其中,ScoreVal表示排序因子;Xo表示搜索请求中的地标值的横坐标的公里值,小数部分向下取整;Yo表示搜索请求中的地标值的纵坐标的公里值,小数部分向下取整;n表示搜索半径,且-(n-1)≤ i ≤(n-1), j = - (n-1)或 j = n_l。
12.根据权利要求10或11所述搜索系统,其特征在于,所述搜索模块进一步用于,在查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果之后,去除搜索结果中的重复地标值。
全文摘要
本发明公开了一种索引建立方法和系统、搜索方法和系统,索引建立方法包括对每个输入样本中的样本关键词进行分词处理得到索引关键词;根据每个输入样本中的地标值分别计算对应的排序因子;以索引关键词为索引建立倒排表,倒排表中的各索引项包括与索引关键词相对应的排序因子和地标值,且在各索引项中,相同的排序因子所对应的地标值聚集在一起。搜索方法包括对搜索请求中的搜索关键词进行分词处理得到搜索索引关键词;根据搜索请求中的地标值和搜索半径计算对应的排序因子;查找倒排表中与所述搜索索引关键词匹配的索引项中匹配所述排序因子的地标值作为搜索结果。通过本发明,能够大大减少处理查询结果的数据量、减少计算时间,从而提高系统吞吐量。
文档编号G06F17/30GK103092844SQ20111033541
公开日2013年5月8日 申请日期2011年10月28日 优先权日2011年10月28日
发明者刘元芳, 周晓波 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1