CN105528463A - 一种搜索引擎的索引数据加载方法和装置 - Google Patents
一种搜索引擎的索引数据加载方法和装置 Download PDFInfo
- Publication number
- CN105528463A CN105528463A CN201610042118.XA CN201610042118A CN105528463A CN 105528463 A CN105528463 A CN 105528463A CN 201610042118 A CN201610042118 A CN 201610042118A CN 105528463 A CN105528463 A CN 105528463A
- Authority
- CN
- China
- Prior art keywords
- index data
- keyword
- kind index
- data corresponding
- equations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种搜索引擎的索引数据加载方法和装置,方法包括:获取输入搜索引擎的第一关键词;查询第一缓存空间是否存在第一关键词对应的第一类索引数据;如果否,查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据;第一内存空间存储压缩第一类索引数据;当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间;返回第一关键词对应的第一类索引数据。本发明可以在不影响搜索体验的情况下,节省内存资源,并可以在占用相同内存资源情况下,提高搜索响应时间。
Description
技术领域
本发明涉及互联网技术领域,特别是涉及一种搜索引擎的索引数据加载方法和一种搜索引擎的索引数据加载装置。
背景技术
随着互联网技术的发展,搜索引擎的搜索功能成为网站的一个必备功能。搜索引擎所处理的数据量越来越多,索引数据量也在不断增长,大数据背景下对搜索引擎不断提出挑战。搜索引擎进行搜索时,需保证搜索体验不断提高的同时减小包括CPU、内存等计算资源的消耗。
为了保证搜索体验,一般搜索引擎将索引数据先直接加载到内存,而不是采用网络数据库的方式获取索引数据,目的是排序算法能够直接使用内存中的索引数据,以最快的速度对用户搜索做出响应。
但是,搜索引擎中索引数据量很大,并且索引数据量随着时间不断增长,而物理机的内存资源有限,如果将索引数据直接展开成排序算法所需数据,将会占用大量的内存。另外,如果内存加载压缩的索引数据,在需要时对压缩的索引数据进行解压,则会严重影响搜索的响应时间,从而影响用户搜索体验。
发明内容
鉴于上述问题,提出了本发明实施例以便提供克服上述问题或者至少部分地解决上述问题的一种搜索引擎的索引数据加载方法和相应的一种搜索引擎的索引数据加载装置。
为了解决上述问题,本发明实施例公开了一种搜索引擎的索引数据加载方法,包括:获取输入搜索引擎的第一关键词;查询第一缓存空间是否存在所述第一关键词对应的第一类索引数据;如果否,查询第一内存空间是否存在所述第一关键词对应的压缩第一类索引数据;所述第一内存空间存储压缩第一类索引数据;当所述第一内存空间存在所述第一关键词对应的压缩第一类索引数据时,对所述第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到所述第一缓存空间;返回所述第一关键词对应的第一类索引数据。
为了解决上述问题,本发明实施例还公开了一种搜索引擎的索引数据加载装置,包括:关键词获取模块,用于获取输入搜索引擎的第一关键词;第一查询模块,用于查询第一缓存空间是否存在所述第一关键词对应的第一类索引数据;第二查询模块,用于当所述第一缓存空间不存在所述第一关键词对应的第一类索引数据时,查询第一内存空间是否存在所述第一关键词对应的压缩第一类索引数据;所述第一内存空间存储压缩第一类索引数据;第一加载模块,用于当所述第一内存空间存在所述第一关键词对应的压缩第一类索引数据时,对所述第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到所述第一缓存空间;第一数据返回模块,用于返回所述第一关键词对应的第一类索引数据。
本发明实施例包括以下优点:在获取到第一关键词后,首先查询第一缓存空间是否存在第一关键词对应的第一类索引数据,如果不存在,则进一步查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据,其中,第一内存空间存储压缩第一类索引数据,并当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间,最后返回第一关键词对应的第一类索引数据。实现了在内存空间中存储压缩的第一类索引数据,而在查询时,建立第一缓存空间以缓存已经解压缩的第一类索引数据,在减小第一类索引数据内存占用量的同时,保证大部分的查询是已经解压缩的索引数据,且不影响搜索的响应时间。
附图说明
图1是第一类索引数据、第二类索引数据和第三类索引数据的组成示意图;
图2是本发明的一种搜索引擎的索引数据加载方法实施例的步骤流程图;
图3是本发明的另一种搜索引擎的索引数据加载方法实施例的步骤流程图;
图4是本发明的一种搜索引擎的索引数据加载装置实施例的结构框图;
图5是本发明的另一种搜索引擎的索引数据加载装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,索引数据依据用途,可以分为第一类索引数据、第二类索引数据和第三类索引数据。其中,第一类索引数据的关键词可以为查询词,例如世界名著等查询词,查询第一类索引数据的结果是查询词相关的文档ID(Identity,身份标识号码),即倒排索引,例如红楼梦、西游记、老人与海等文档ID。一次用户搜索中,搜索引擎对查询词的查询量和用户搜索量在同一个数量级,查询结果即查询词相关文档ID的数量是用户搜索量的四个数量级。第二类索引数据的关键词可以为文档ID,查询第二类索引数据的结果是文档ID对应的文档属性,即正排索引,例如红楼梦的作者、年份、分类等。一般情况下,一次用户搜索对应文档ID的数量是用户搜索量的四个数量级以上,因此,对第二类索引数据的查询结果是用户搜索量的四个数量级以上。第三类索引数据的关键词可以为查询词+文档ID,查询第三类索引数据的结果是查询词下用户的行为数据,例如最近搜索世界名著的100个用户中,50个用户点击了红楼梦,40个用户点击了老人与海,其余用户没有进行点击操作,第三类索引数据的结果为正排索引。实际情况下,用户行为数据并不覆盖查询词对应的所有文档ID,因为用户感兴趣的文档ID只是搜索引擎搜索结果中的一小部分。一般来说,查询词+文档ID的查询量是用户搜索量两个数量级左右,因此,对第三类索引数据的查询结果即用户感兴趣的文档ID数量是用户搜索量的两个数量级。简单来说,一次查询,三种类型索引数据查询量比例是1:10000:100,查询结果比例是10000:10000:100。
具体地,三类索引数据在索引文件中的存储格式都是压缩形式,在加载到内存后,需要解压缩成能够直接使用的索引数据,解压缩所需的CPU时间与索引数据信息量相关。由于三类索引数据的查询结果都是描述文档ID相关的信息,因而解压缩时间和文档ID的数量相关,则三类索引的解压缩时间如下:对于第一类索引数据,解压缩时间和文档ID的数量正相关,即解压缩时间为解压缩单个文档ID时间的四个数量级;对于第二类索引数据,虽然解压缩单个文档ID时间短,但是每一次搜索对应的所有文档ID都需要解压缩,因此解压缩时间为解压缩单个文档ID时间的四个数量级以上,与第一类索引数据需要的解压缩时间在同一个级别;对于第三类索引数据,一个查询词对应的文档ID的数量一般在一百以内,解压缩时间为解压缩单个文档ID时间的两个数量级。简单来说,一次查询对应的三种类型索引数据的解压缩时间比是10000:10000:100。
对于第一类索引数据和第二类索引数据,由于解压缩的时间较长,影响了搜索的响应时间和吞吐量,所以应保证查询的索引数据是已经解压的数据;对于第三类索引数据,则可以先查询到压缩的索引数据,解压压缩的索引数据后再使用。
基于以上思想提出了本发明实施例,本发明实施例的核心构思之一在于,在内存空间中存储压缩的索引数据,并根据第一关键词建立缓存空间,以缓存已经解压缩的索引数据,在查询时先查询缓存空间,从而在减小内存占用量的同时,保证大部分查询是已经解压缩的索引数据。
实施例一
参照图2,示出了本发明的一种搜索引擎的索引数据加载方法实施例的步骤流程图,具体可以包括如下步骤:
步骤S1,获取输入搜索引擎的第一关键词。
当用户在搜索引擎中输入搜索信息后,步骤S1可以通过对搜索信息进行分词等处理来获取搜索信息中的第一关键词。进入步骤S2。
步骤S2,查询第一缓存空间是否存在第一关键词对应的第一类索引数据。
其中,步骤S2中第一关键词对应的第一类索引数据为具有该第一关键词的第一类索引数据,具体地,第一类索引数据的键为关键词,值为关键词相关的文档ID的列表。另外,第一缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第一缓存空间和第二缓存空间可以为LRU(LeastRecentlyUsed,近期最少使用算法)缓存空间,此时,LRU缓存空间可以缓存一定数量的第一类索引数据,当超过设定的数量阈值时,就把一些过期的第一类索引数据删除,例如一定数量的第一类索引数据为10000条第一类索引数据,当第一类索引数据小于10000条时可以随意加载新的第一类索引数据,当第一类索引数据超过10000条时,就需要把新的第一类索引数据添加进来,同时要把相应数量的过期第一类索引数据删除,以确保最大缓存数量为10000条。进入步骤S3。
步骤S3,如果否,查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据;第一内存空间存储压缩第一类索引数据。
其中,第一类索引数据的关键词可以为查询词。第一内存空间存储已压缩第一类索引数据,从而可以减小第一类索引数据所占用的内存量。如果是,进入步骤S4。
步骤S4,当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间。
因此,第一缓存空间存储的索引数据为解压缩的第一类索引数据。其中,对第一关键词对应的第一类压缩索引数据进行解压缩可以为对压缩第一类索引数据中的倒排表等进行解压缩。进入步骤S5。
步骤S5,返回第一关键词对应的第一类索引数据。
具体地,步骤S5可以返回第一关键词对应的第一类索引数据至排序算法。
根据本发明实施例一,在获取到第一关键词后,首先查询第一缓存空间是否存在第一关键词对应的第一类索引数据,如果不存在,则进一步查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据,其中,第一内存空间存储压缩第一类索引数据,并当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间,最后返回第一关键词对应的第一类索引数据。实现了在内存空间中存储压缩的第一类索引数据,而在查询时,建立第一缓存空间以缓存已经解压缩的第一类索引数据,在减小第一类索引数据内存占用量的同时,保证大部分的查询是已经解压缩的索引数据,且不影响搜索的响应时间。
实施例二
参照图3,示出了本发明的另一种搜索引擎的索引数据加载方法实施例的步骤流程图,具体可以包括如下步骤:
步骤S21,从预设磁盘分别读取压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件至第一内存空间、第二内存空间和第三内存空间。
其中,压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件除可以存储在磁盘外,还可以存储在内存空间中。
步骤S22,根据压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件分别构建具有预设数据结构的压缩第一类索引数据、压缩第二类索引数据和压缩第三类索引数据。
其中,预设数据结构可以为map数据结构,map数据结构描述键-值的对应关系。具体地,压缩第一类索引数据的键为关键词,值为关键词相关的文档ID的列表;压缩第二类索引数据的键为文档ID,值为与文档ID对应的文档属性集合;压缩第三类索引数据的键为关键词和文档ID,值为关键词下与文档ID对应的文档的属性文档,所对应的属性集合,换句话说,该值为关键词下用户的行为数据。
步骤S23,获取输入搜索引擎的第一关键词。
当用户在搜索引擎中输入搜索信息后,步骤S23可以通过对搜索信息进行分词等处理来获取搜索信息中的第一关键词。进入步骤S24。
步骤S24,查询第一缓存空间是否存在第一关键词对应的第一类索引数据。
其中,步骤S24中第一关键词对应的第一类索引数据为具有该第一关键词的第一类索引数据。另外,第一缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第一缓存空间可以为LRU缓存空间。如果是,进入步骤S28,如果否,进入步骤S25。
步骤S25,如果否,查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据;第一内存空间存储压缩第一类索引数据。
第一内存空间存储已压缩第一类索引数据,从而可以减小第一类索引数据所占用的内存量。如果是,进入步骤S26。
步骤S26,当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间。
因此,第一缓存空间存储的索引数据为解压缩的第一类索引数据。其中,对第一关键词对应的压缩第一类索引数据进行解压缩可以为对压缩第一类索引数据中的倒排表等进行解压缩。进入步骤S27。
步骤S27,查询第一缓存空间,以获取第一关键词对应的第一类索引数据。
步骤S28,返回第一关键词对应的第一类索引数据。
具体地,步骤S28可以返回第一关键词对应的第一类索引数据至排序算法。
步骤S29,以第一关键词对应的第一类索引数据为第二关键词,查询第二缓存空间是否存在第二关键词对应的第二类索引数据。
其中,第二类索引数据的键为第二关键词,即关键词相关的文档ID的列表,步骤S29中第二关键词对应的第二类索引数据为具有该第二关键词的第二类索引数据。另外,第二缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第二缓存空间可以为LRU缓存空间,此时,LRU缓存空间可以缓存一定数量的第二类索引数据,当超过设定的数量阈值时,就把一些过期的第二类索引数据删除,例如一定数量的第二类索引数据为10000条第二类索引数据,当第二类索引数据小于10000条时可以随意加载新的第二类索引数据,当第二类索引数据超过10000条时,就需要把新的第二类索引数据添加进来,同时要把相应数量的过期第二类索引数据删除,以确保最大缓存数量为10000条。如果是,进入步骤S213,如果否,进入步骤S210。
步骤S210,如果否,查询第二内存空间是否存在第二关键词对应的压缩第二类索引数据;第二内存空间存储压缩第二类索引数据。
第二内存空间存储已压缩第二类索引数据,从而可以减小第二类索引数据所占用的内存量。如果是,进入步骤S211。
步骤S211,当第二内存空间存在第二关键词对应的压缩第二类索引数据时,对第二关键词对应的压缩第二类索引数据进行解压缩,并将解压缩后的第二类索引数据加载到第二缓存空间。
因此,第二缓存空间存储的索引数据为解压缩的第二类索引数据。其中,对第二关键词对应的压缩第二类索引数据进行解压缩,可以为对压缩第二类索引数据中的倒排表等进行解压缩。进入步骤S212。
步骤S212,查询第二缓存空间,以获取第二关键词对应的第二类索引数据。
步骤S213,返回第二关键词对应的第二类索引数据。
具体地,步骤S213可以返回第二关键词对应的第二类索引数据至排序算法。
步骤S214,以第一关键词和第一关键词对应的第一类索引数据为第三关键词,查询第三内存空间是否存在第三关键词对应的压缩第三类索引数据;第三内存空间存储压缩第三类索引数据。
其中,第三类索引数据的键为关键词和关键词相关的文档ID的列表,第三类索引数据的值为关键词下用户的行为数据,步骤S214中第三关键词对应的第三类索引数据为具有该第三关键词的第三类索引数据。其中,第三内存空间存储已压缩第三类索引数据,从而可以减小第三类索引数据所占用的内存量。如果是,进入步骤S215。
步骤S215,如果是,对第三关键词对应的压缩第三类索引数据进行解压缩。
其中,对第三关键词对应的第三类索引数据进行解压缩,可以为对压缩第三类索引数据中的倒排表等进行解压缩。进入步骤S216。
步骤S216,返回解压缩后的第三类索引数据。
具体地,步骤S216可以返回解压缩后的第三类索引数据至排序算法。
根据本发明实施例二,在第一内存空间中存储压缩第一类索引数据,在第二内存空间中存储压缩第二类索引数据,在第三内存空间中存储压缩第三类索引数据,进而根据第一关键词建立第一缓存空间和第二缓存空间,以分别缓存已经解压缩的第一类索引数据和第二类索引数据。从而使得对于第一类索引数据的大部分查询是查询第一缓存空间中已经解压缩的第一类索引数据,对于第二类索引数据的大部分查询是查询第二缓存空间中已经解压缩的第二类索引数据,对于第三类索引数据的查询是查询第三内存空间中压缩第三类索引数据。实现在不影响搜索响应时间的同时,相对于将索引数据直接展开成排序算法所需数据,本发明有效减少了第一类索引数据、第二类索引数据和第三类索引数据的内存占用量,节省了内存资源,以及当在占用相同内存资源情况下,相对于内存加载压缩的索引数据,本发明有效提高了搜索引擎的搜索响应时间。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
实施例三
参照图4,示出了本发明的一种搜索引擎的索引数据加载装置实施例的结构框图,具体可以包括如下模块:
关键词获取模块1,用于获取输入搜索引擎的第一关键词。
当用户在搜索引擎中输入搜索信息后,关键词获取模块1可以通过对搜索信息进行分词等处理来获取搜索信息中的第一关键词。进入第一查询模块2。
第一查询模块2,用于查询第一缓存空间是否存在第一关键词对应的第一类索引数据。
其中,第一查询模块2中第一关键词对应的第一类索引数据为具有该第一关键词的第一类索引数据,具体地,第一类索引数据的键为关键词,值为关键词相关的文档ID的列表。另外,第一缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第一缓存空间和第二缓存空间可以为LRU缓存空间,此时,LRU缓存空间可以缓存一定数量的第一类索引数据,当超过设定的数量阈值时,就把一些过期的第一类索引数据删除,例如一定数量的第一类索引数据为10000条第一类索引数据,当第一类索引数据小于10000条时可以随意加载新的第一类索引数据,当第一类索引数据超过10000条时,就需要把新的第一类索引数据添加进来,同时要把相应数量的过期第一类索引数据删除,以确保最大缓存数量为10000条。进入第二查询模块3。
第二查询模块3,用于当第一缓存空间不存在第一关键词对应的第一类索引数据时,查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据;第一内存空间存储压缩第一类索引数据。
其中,第一类索引数据的关键词可以为查询词。第一内存空间存储已压缩第一类索引数据,从而可以减小第一类索引数据所占用的内存量。如果是,进入第一加载模块4。
第一加载模块4,用于当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间。
因此,第一缓存空间存储的索引数据为解压缩的第一类索引数据。其中,对第一关键词对应的第一类压缩索引数据进行解压缩可以为对压缩第一类索引数据中的倒排表等进行解压缩。进入第一数据返回模块5。
第一数据返回模块5,用于返回第一关键词对应的第一类索引数据。
具体地,第一数据返回模块5可以返回第一关键词对应的第一类索引数据至排序算法。
根据本发明实施例三,在关键词获取模块获取到第一关键词后,首先第一查询模块查询第一缓存空间是否存在第一关键词对应的第一类索引数据,如果不存在,则第二查询模块进一步查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据,其中,第一内存空间存储压缩第一类索引数据,并当第一内存空间存在第一关键词对应的压缩第一类索引数据时,第一加载模块对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间,最后第一数据返回模块返回第一关键词对应的第一类索引数据。实现了在内存空间中存储压缩的第一类索引数据,而在查询时,建立第一缓存空间以缓存已经解压缩的第一类索引数据,在减小第一类索引数据内存占用量的同时,保证大部分的查询是已经解压缩的索引数据,且不影响搜索的响应时间。
实施例四
参照图5,示出了本发明的另一种搜索引擎的索引数据加载装置实施例的结构框图,具体可以包括如下模块:
索引文件读取模块51,用于从预设磁盘分别读取压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件至第一内存空间、第二内存空间和第三内存空间。
其中,压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件除可以存储在磁盘外,还可以存储在内存空间中。
索引数据构建模块52,用于根据压缩的第一类索引文件、压缩的第二类索引文件和压缩的第三类索引文件分别构建具有预设数据结构的压缩第一类索引数据、压缩第二类索引数据和压缩第三类索引数据。
其中,预设数据结构可以为map数据结构,map数据结构描述键-值的对应关系。具体地,压缩第一类索引数据的键为关键词,值为关键词相关的文档ID的列表;压缩第二类索引数据的键为文档ID,值为与文档ID对应的文档属性集合;压缩第三类索引数据的键为关键词和文档ID,值为关键词下与文档ID对应的文档的属性文档,所对应的属性集合,换句话说,该值为关键词下用户的行为数据。
关键词获取模块53,用于获取输入搜索引擎的第一关键词。
当用户在搜索引擎中输入搜索信息后,关键词获取模块53可以通过对搜索信息进行分词等处理来获取搜索信息中的第一关键词。进入第一查询模块54。
第一查询模块54,用于查询第一缓存空间是否存在第一关键词对应的第一类索引数据。
其中,第一查询模块54中第一关键词对应的第一类索引数据为具有该第一关键词的第一类索引数据。另外,第一缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第一缓存空间可以为LRU缓存空间。如果是,进入第一数据返回模块58,如果否,进入第二查询模块55。
第二查询模块55,用于当第一缓存空间不存在第一关键词对应的第一类索引数据时,查询第一内存空间是否存在第一关键词对应的压缩第一类索引数据;第一内存空间存储压缩第一类索引数据。
第一内存空间存储已压缩第一类索引数据,从而可以减小第一类索引数据所占用的内存量。如果是,进入第一加载模块56。
第一加载模块56,用于当第一内存空间存在第一关键词对应的压缩第一类索引数据时,对第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到第一缓存空间。
因此,第一缓存空间存储的索引数据为解压缩的第一类索引数据。其中,对第一关键词对应的压缩第一类索引数据进行解压缩可以为对压缩第一类索引数据中的倒排表等进行解压缩。进入第三查询模块57。
第三查询模块57,用于查询第一缓存空间,以获取第一关键词对应的第一类索引数据。
第一数据返回模块58,用于返回第一关键词对应的第一类索引数据。
具体地,第一数据返回模块58可以返回第一关键词对应的第一类索引数据至排序算法。
第四查询模块59,用于以第一关键词对应的第一类索引数据为第二关键词,查询第二缓存空间是否存在第二关键词对应的第二类索引数据。
其中,第二类索引数据的键为第二关键词,即关键词相关的文档ID的列表,第四查询模块59中第二关键词对应的第二类索引数据为具有该第二关键词的第二类索引数据。另外,第二缓存空间可以为内存空间,也可以为除内存空间以外的其它高速存储空间,只需不影响搜索引擎的搜索响应时间即可。具体地,第二缓存空间可以为LRU缓存空间,此时,LRU缓存空间可以缓存一定数量的第二类索引数据,当超过设定的数量阈值时,就把一些过期的第二类索引数据删除,例如一定数量的第二类索引数据为10000条第二类索引数据,当第二类索引数据小于10000条时可以随意加载新的第二类索引数据,当第二类索引数据超过10000条时,就需要把新的第二类索引数据添加进来,同时要把相应数量的过期第二类索引数据删除,以确保最大缓存数量为10000条。如果是,进入第二数据返回模块513,如果否,进入第五查询模块510。
第五查询模块510,用于当第二缓存空间不存在第二关键词对应的第二类索引数据时,查询第二内存空间是否存在第二关键词对应的压缩第二类索引数据;第二内存空间存储压缩第二类索引数据。
第二内存空间存储已压缩第二类索引数据,从而可以减小第二类索引数据所占用的内存量。如果是,进入第二加载模块511。
第二加载模块511,用于当第二内存空间存在第二关键词对应的压缩第二类索引数据时,对第二关键词对应的压缩第二类索引数据进行解压缩,并将解压缩后的第二类索引数据加载到第二缓存空间。
因此,第二缓存空间存储的索引数据为解压缩的第二类索引数据。其中,对第二关键词对应的压缩第二类索引数据进行解压缩,可以为对压缩第二类索引数据中的倒排表等进行解压缩。进入第六查询模块512。
第六查询模块512,用于查询第二缓存空间,以获取第二关键词对应的第二类索引数据。
第二数据返回模块513,用于返回第二关键词对应的第二类索引数据。
具体地,第二数据返回模块513可以返回第二关键词对应的第二类索引数据至排序算法。
第七查询模块514,用于以第一关键词和第一关键词对应的第一类索引数据为第三关键词,查询第三内存空间是否存在第三关键词对应的压缩第三类索引数据;第三内存空间存储压缩第三类索引数据。
其中,第三类索引数据的键为关键词和关键词相关的文档ID的列表,第三类索引数据的值为关键词下用户的行为数据,第七查询模块514中第三关键词对应的第三类索引数据为具有该第三关键词的第三类索引数据。其中,第三内存空间存储已压缩第三类索引数据,从而可以减小第三类索引数据所占用的内存量。如果是,进入解压缩模块515。
解压缩模块515,用于当第三内存空间存在第三关键词对应的压缩第三类索引数据时,对第三关键词对应的压缩第三类索引数据进行解压缩。
其中,对第三关键词对应的第三类索引数据进行解压缩,可以为对压缩第三类索引数据中的倒排表等进行解压缩。进入第三数据返回模块516。
第三数据返回模块516,用于返回解压缩后的第三类索引数据。
具体地,第三数据返回模块516可以返回解压缩后的第三类索引数据至排序算法。
根据本发明实施例四,在第一内存空间中存储压缩第一类索引数据,在第二内存空间中存储压缩第二类索引数据,在第三内存空间中存储压缩第三类索引数据,进而根据第一关键词建立第一缓存空间和第二缓存空间,以分别缓存已经解压缩的第一类索引数据和第二类索引数据。从而使得对于第一类索引数据的大部分查询是查询第一缓存空间中已经解压缩的第一类索引数据,对于第二类索引数据的大部分查询是查询第二缓存空间中已经解压缩的第二类索引数据,对于第三类索引数据的查询是查询第三内存空间中压缩第三类索引数据。实现在不影响搜索响应时间的同时,相对于将索引数据直接展开成排序算法所需数据,本发明有效减少了第一类索引数据、第二类索引数据和第三类索引数据的内存占用量,节省了内存资源,以及当在占用相同内存资源情况下,相对于内存加载压缩的索引数据,本发明有效提高了搜索引擎的搜索响应时间。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种搜索引擎的索引数据加载方法和一种搜索引擎的索引数据加载装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种搜索引擎的索引数据加载方法,其特征在于,包括:
获取输入搜索引擎的第一关键词;
查询第一缓存空间是否存在所述第一关键词对应的第一类索引数据;
如果否,查询第一内存空间是否存在所述第一关键词对应的压缩第一类索引数据;所述第一内存空间存储压缩第一类索引数据;
当所述第一内存空间存在所述第一关键词对应的压缩第一类索引数据时,对所述第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到所述第一缓存空间;
返回所述第一关键词对应的第一类索引数据。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述第一缓存空间存在所述第一关键词对应的第一类索引数据时,返回所述第一关键词对应的第一类索引数据。
3.根据权利要求1所述的方法,其特征在于,在所述将解压缩后的第一类索引数据加载到所述第一缓存空间之后,以及在所述返回所述第一关键词对应的第一类索引数据之前,还包括:
查询所述第一缓存空间,以获取所述第一关键词对应的第一类索引数据。
4.根据权利要求1所述的方法,其特征在于,在所述返回所述第一关键词对应的第一类索引数据之后,还包括:
以所述第一关键词对应的第一类索引数据为第二关键词,查询第二缓存空间是否存在所述第二关键词对应的第二类索引数据;
如果否,查询第二内存空间是否存在所述第二关键词对应的压缩第二类索引数据;所述第二内存空间存储压缩第二类索引数据;
当所述第二内存空间存在所述第二关键词对应的压缩第二类索引数据时,对所述第二关键词对应的压缩第二类索引数据进行解压缩,并将解压缩后的第二类索引数据加载到所述第二缓存空间;
返回所述第二关键词对应的第二类索引数据。
5.根据权利要求4所述的方法,其特征在于,还包括:
当所述第二缓存空间存在所述第二关键词对应的第二类索引数据时,返回所述第二关键词对应的第二类索引数据。
6.根据权利要求4所述的方法,其特征在于,在所述将解压缩后的第二类索引数据加载到所述第二缓存空间之后,和所述返回所述第二关键词对应的第二类索引数据之前,还包括:
查询所述第二缓存空间,以获取所述第二关键词对应的第二类索引数据。
7.根据权利要求1所述的方法,其特征在于,在所述返回所述第一关键词对应的第一类索引数据之后,还包括:
以所述第一关键词和所述第一关键词对应的第一类索引数据为第三关键词,查询第三内存空间是否存在所述第三关键词对应的压缩第三类索引数据;所述第三内存空间存储压缩第三类索引数据;
如果是,对所述第三关键词对应的压缩第三类索引数据进行解压缩;
返回解压缩后的第三类索引数据。
8.一种搜索引擎的索引数据加载装置,其特征在于,包括:
关键词获取模块,用于获取输入搜索引擎的第一关键词;
第一查询模块,用于查询第一缓存空间是否存在所述第一关键词对应的第一类索引数据;
第二查询模块,用于当所述第一缓存空间不存在所述第一关键词对应的第一类索引数据时,查询第一内存空间是否存在所述第一关键词对应的压缩第一类索引数据;所述第一内存空间存储压缩第一类索引数据;
第一加载模块,用于当所述第一内存空间存在所述第一关键词对应的压缩第一类索引数据时,对所述第一关键词对应的压缩第一类索引数据进行解压缩,并将解压缩后的第一类索引数据加载到所述第一缓存空间;
第一数据返回模块,用于返回所述第一关键词对应的第一类索引数据。
9.根据权利要求8所述的装置,其特征在于,
当所述第一缓存空间存在所述第一关键词对应的第一类索引数据时,进入所述第一数据返回模块。
10.根据权利要求8所述的装置,其特征在于,在所述第一加载模块之后,以及在所述第一数据返回模块之前,还包括:
第三查询模块,用于查询所述第一缓存空间,以获取所述第一关键词对应的第一类索引数据。
11.根据权利要求8所述的装置,其特征在于,在所述第一数据返回模块之后,还包括:
第四查询模块,用于以所述第一关键词对应的第一类索引数据为第二关键词,查询第二缓存空间是否存在所述第二关键词对应的第二类索引数据;
第五查询模块,用于当所述第二缓存空间不存在所述第二关键词对应的第二类索引数据时,查询第二内存空间是否存在所述第二关键词对应的压缩第二类索引数据;所述第二内存空间存储压缩第二类索引数据;
第二加载模块,用于当所述第二内存空间存在所述第二关键词对应的压缩第二类索引数据时,对所述第二关键词对应的压缩第二类索引数据进行解压缩,并将解压缩后的第二类索引数据加载到所述第二缓存空间;
第二数据返回模块,用于返回所述第二关键词对应的第二类索引数据。
12.根据权利要求11所述的装置,其特征在于,
当所述第二缓存空间存在所述第二关键词对应的第二类索引数据时,进入所述第二数据返回模块。
13.根据权利要求11所述的装置,其特征在于,在所述第二加载模块之后,以及在所述第三数据返回模块之前,还包括:
第六查询模块,用于查询所述第二缓存空间,以获取所述第二关键词对应的第二类索引数据。
14.根据权利要求8所述的装置,其特征在于,在所述第一数据返回模块之后,还包括:
第七查询模块,用于以所述第一关键词和所述第一关键词对应的第一类索引数据为第三关键词,查询第三内存空间是否存在所述第三关键词对应的压缩第三类索引数据;所述第三内存空间存储压缩第三类索引数据;
解压缩模块,用于当所述第三内存空间存在所述第三关键词对应的压缩第三类索引数据时,对所述第三关键词对应的压缩第三类索引数据进行解压缩;
第三数据返回模块,用于返回解压缩后的第三类索引数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610042118.XA CN105528463B (zh) | 2016-01-21 | 2016-01-21 | 一种搜索引擎的索引数据加载方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610042118.XA CN105528463B (zh) | 2016-01-21 | 2016-01-21 | 一种搜索引擎的索引数据加载方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105528463A true CN105528463A (zh) | 2016-04-27 |
CN105528463B CN105528463B (zh) | 2018-12-14 |
Family
ID=55770686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610042118.XA Active CN105528463B (zh) | 2016-01-21 | 2016-01-21 | 一种搜索引擎的索引数据加载方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105528463B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577506A (zh) * | 2017-08-07 | 2018-01-12 | 上海斐讯数据通信技术有限公司 | 一种数据预加载的方法和系统 |
CN115794892A (zh) * | 2023-01-09 | 2023-03-14 | 北京创新乐知网络技术有限公司 | 基于分层缓存的搜索方法、装置、设备及介质 |
CN115905323A (zh) * | 2023-01-09 | 2023-04-04 | 北京创新乐知网络技术有限公司 | 适用于多种搜索策略的搜索方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040267732A1 (en) * | 2003-05-01 | 2004-12-30 | Luk Robert Wing Pong | Data structure and system for IP address lookup and IP address lookup system |
CN101159658A (zh) * | 2007-11-02 | 2008-04-09 | 华为技术有限公司 | 虚拟私用网路由查找的方法和装置 |
CN101437016A (zh) * | 2007-11-16 | 2009-05-20 | 北京乾坤化物数字技术有限公司 | ip地址结构树的构建方法 |
CN103561133A (zh) * | 2013-11-19 | 2014-02-05 | 中国科学院计算机网络信息中心 | 一种ip地址归属信息索引方法及快速查询方法 |
-
2016
- 2016-01-21 CN CN201610042118.XA patent/CN105528463B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040267732A1 (en) * | 2003-05-01 | 2004-12-30 | Luk Robert Wing Pong | Data structure and system for IP address lookup and IP address lookup system |
CN101159658A (zh) * | 2007-11-02 | 2008-04-09 | 华为技术有限公司 | 虚拟私用网路由查找的方法和装置 |
CN101437016A (zh) * | 2007-11-16 | 2009-05-20 | 北京乾坤化物数字技术有限公司 | ip地址结构树的构建方法 |
CN103561133A (zh) * | 2013-11-19 | 2014-02-05 | 中国科学院计算机网络信息中心 | 一种ip地址归属信息索引方法及快速查询方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577506A (zh) * | 2017-08-07 | 2018-01-12 | 上海斐讯数据通信技术有限公司 | 一种数据预加载的方法和系统 |
CN115794892A (zh) * | 2023-01-09 | 2023-03-14 | 北京创新乐知网络技术有限公司 | 基于分层缓存的搜索方法、装置、设备及介质 |
CN115905323A (zh) * | 2023-01-09 | 2023-04-04 | 北京创新乐知网络技术有限公司 | 适用于多种搜索策略的搜索方法、装置、设备及介质 |
CN115905323B (zh) * | 2023-01-09 | 2023-08-18 | 北京创新乐知网络技术有限公司 | 适用于多种搜索策略的搜索方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105528463B (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9977802B2 (en) | Large string access and storage | |
US11537578B2 (en) | Paged column dictionary | |
Urbani et al. | Dynamite: Parallel materialization of dynamic rdf data | |
WO2016209975A2 (en) | Preliminary ranker for scoring matching documents | |
US20170109406A1 (en) | In-memory column-level multi-versioned global dictionary for in-memory databases | |
US11748324B2 (en) | Reducing matching documents for a search query | |
US20160378828A1 (en) | Bit vector search index using shards | |
WO2016209962A2 (en) | Storage and retrieval of data from a bit vector search index | |
Tolosa et al. | Performance improvements for search systems using an integrated cache of lists+ intersections | |
CN103036697B (zh) | 一种多维度数据去重方法及系统 | |
CN107729406B (zh) | 一种数据分类存储方法及装置 | |
WO2016209932A1 (en) | Matching documents using a bit vector search index | |
CN105528463A (zh) | 一种搜索引擎的索引数据加载方法和装置 | |
WO2016209971A1 (en) | Match fix-up to remove matching documents | |
CN106155934A (zh) | 一种云环境下基于重复数据的缓存方法 | |
CN112131218A (zh) | 一种基因对比的哈希查表方法、装置、设备及存储介质 | |
CN106897280A (zh) | 数据查询方法及装置 | |
CN110377227B (zh) | 一种数据分块存储方法、装置及电子设备 | |
Sunuwar et al. | Comparative analysis of relational and graph databases for data provenance: Performance, queries, and security considerations | |
CN104462080A (zh) | 针对检索结果进行分组统计的索引结构创建方法和系统 | |
US10733164B2 (en) | Updating a bit vector search index | |
CN111767280A (zh) | 数据处理方法、装置及存储介质 | |
EP3314467B1 (en) | Bit vector search index | |
Huang et al. | Pisa: An index for aggregating big time series data | |
CN102541857A (zh) | 一种网页排序方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |