CN104679778B - 一种搜索结果的生成方法及装置 - Google Patents
一种搜索结果的生成方法及装置 Download PDFInfo
- Publication number
- CN104679778B CN104679778B CN201310631836.7A CN201310631836A CN104679778B CN 104679778 B CN104679778 B CN 104679778B CN 201310631836 A CN201310631836 A CN 201310631836A CN 104679778 B CN104679778 B CN 104679778B
- Authority
- CN
- China
- Prior art keywords
- inverted index
- retrieval module
- word
- frequency
- documents
- 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.)
- Active
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于搜索技术领域,提供了一种搜索结果的生成方法及装置,包括:对抓取的文档进行分词处理,统计每个分词的词频;分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值;将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置;将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果。本发明在读取倒排索引数据时,降低了内存占用、减少了磁盘读写,从而大大提高了搜索结果的生成效率。
Description
技术领域
本发明属于搜索技术领域,尤其涉及一种搜索结果的生成方法及装置。
背景技术
随着互联网技术的飞速发展,网络上的信息量每天都呈现着爆炸式的增长,而搜索引擎通过构建有效的数据索引,能够帮助用户快捷地在海量数据中查询到需要的信息。在搜索引擎技术中,倒排索引(Inverted Index)作为最常使用到的一种数据结构,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射,通过倒排索引,可以根据关键词快速地获取到包含这个关键词的文档列表,以生成搜索结果反馈给用户。
现有的搜索引擎中,进行倒排索引的词以及这些词对应的文档列表均是通过单机存储的,由于单机的硬件资源有限,在该存储条件下,进行倒排索引的词数量越多,则由此产生的倒排数据所占用的存储空间也会越大,与此同时,在检索过程中对磁盘的读写次数也会越频繁。例如,以2亿篇文档为例,其中进行倒排索引的词的数量多于14亿,而这些词对应的倒排数据总量则达到了560GB之多,从而导致在搜索过程中,中央处理器(CentralProcessing Unit,CPU)和磁盘的压力增大,无法高效地进行运算,影响倒排索引数据的存取速度,导致搜索结果的生成效率低。
发明内容
本发明实施例的目的在于提供一种搜索结果的生成方法,解决目前搜索引擎中倒排索引数据的存取速度慢,导致搜索结果的生成效率低的问题。
本发明实施例是这样实现的,一种搜索结果的生成方法,包括:
对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量;
分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值;
将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置;
将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果。
本发明实施例的另一目的在于提供一种搜索结果的生成装置,包括:
分词处理单元,用于对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量;
倒排索引生成单元,用于分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值;
倒排索引加载单元,用于将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置;
搜索结果生成单元,用于将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果。
本发明实施例分别考虑了高频词的倒排索引与低频词的倒排索引在数据存取时的不同特点,将高、低频词分离,这两类词对应的倒排索引分机存储,相比于将高、低频的倒排索引混合在一起单机存储的方案,本方案在读取倒排索引数据时,降低了内存占用、减少了磁盘读写,从而大大提高了搜索结果的生成效率。
附图说明
图1是本发明实施例提供的搜索结果的生成方法的实现流程图;
图2是本发明实施例提供的搜索结果的生成方法倒排索引存储结构的示意图;
图3是本发明实施例提供的搜索结果的生成方法S104的具体实现流程图;
图4是本发明实施例提供的搜索结果的生成方法S103的具体的实现流程图;
图5本发明实施例另一提供的搜索结果的生成方法S104的具体实现流程图;
图6本发明另一实施例提供的搜索结果的生成方法S104的具体实现流程图;
图7是本发明实施例提供的搜索结果的生成装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例分别考虑了高频词的倒排索引与低频词的倒排索引在数据存取时的不同特点,将高、低频词分离,这两类词对应的倒排索引分机存储,相比于将高、低频的倒排索引混合在一起单机存储的方案,本方案在读取倒排索引数据时,降低了内存占用、减少了磁盘读写,从而大大提高了搜索结果的生成效率。
需要说明的是,接下来均以网页搜索为例,对本发明实施例提供的搜索结果的生成方法及装置进行详细阐述,容易想到的是,基于相同的实现原理,本发明实施例也可运用于其他能够支持本发明实施例提供的搜索结果的生成方法及装置实现的搜索类产品中,例如,文献数据库的检索工具、图书馆检索系统,等等,在此不一一举例。
图1示出了本发明实施例提供的搜索结果的生成方法的实现流程,详述如下:
在S101中,对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量。
所述抓取的文档,对于网页搜索来说,是由搜索引擎遵从特定规律,跟踪互联网上的网页链接,从一个网页爬到另一个网页,并将爬行过程中获取到的网页数据抓取下来而得到的。对应于搜索引擎所提供的搜索服务的不同,抓取的文档也不同,例如对于垂直搜索来说,其抓取的文档仅仅包括了该垂直搜索所专注的特定搜索领域或者特殊搜索需求的网页数据;而对于门户网站的站内搜索来说,其抓取的文档仅仅包括了该门户网站内的网页数据。
在将抓取得到的文档存入原始页面数据库之后,就需要对抓取的文档进行分词处理,经过提取文字、中英文分词、去停止词、消除噪音等步骤之后,首先得到了抓取的文档中的分词的顺排索引,顺排索引的数据格式为<docid,termid>,其中,docid用于标识一篇文档,而termid用于表示该文档中的一个分词,其是通过对分词进行消息摘要算法第五版(Message Digest Algorithm 5,MD5)计算等操作所得到的64位无符号整数,且每个分词的termid在全局均是唯一的。
在得到了抓取的文档中的分词的顺排索引之后,可以通过MapReduce等编程模型,对得到的每个分词进行词频统计,以在这些分词中划分出高频词和低频词。在本实施例中,分词的词频用于表示抓取得到的文档中包括该分词的文档的数量,例如,在抓取得到的10000篇文档中,包含分词“招聘”的文档有1000篇,则分词“招聘”的词频为1000。对于统计出的词频大于预设阈值的分词,将其划分为高频词,而对于统计出的词频小于或者等于该预设阈值的分词,将其划分为低频词。在本实施例中,预设阈值可以根据抓取的文档的总量来进行设定,例如,若当抓取的文档的总量为10000时,预设阈值设定在100,则当抓取的文档的总量翻倍时,预设阈值的设定应该高于100才较为合理,具体的设定方式可以根据实际的文档抓取情况进行确定,在此不用于限定本发明。
在S102中,分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值。
根据分词的词频的不同,分词的倒排索引在数据读取上也具备各自的特点:
对于高频词来说,其在所有分词中占的总量较小,可能不到所有分词总量的1%,因此,在读取高频词的文档列表时,对磁盘的读写次数较少,但是,高频词由于其词频较高,在很多网页中都会出现,因此,每一个高频词对应的文档列表的数据量都是相当庞大的,通常可以达到几MB至上百MB;
对于低频词来说,其在所有分词中占的总量很大,可能所有分词中超过99%的都是低频词,因此,在读取低频词的文档列表时,对磁盘的读写次数会非常多,但是,低频词由于其词频很低,因此,每一个低频词对应的文档列表的数据量通常只有几B到几十B。
根据高频词与低频词的倒排索引在数据读取上的不同特点,在本实施例中,根据S101统计得到的分词的顺排索引以及高频词列表、低频词列表,在S102中,分别反向生成高频词倒排索引和低频词倒排索引。将高频词与低频词分离,分别生成各自的倒排索引的方式,是为了便于在后续操作中,将这两类倒排索引分机存储。
在S103中,将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置。
对于S102中分别生成的高频词倒排索引和低频词倒排索引,在S103中,分别将这两类倒排索引加载至不同的检索模块,其中,所述检索模块具备独立的存储装置,一个检索模块可以为一台服务器,也可以由多台服务器架构组成,但必须保证的是加载高频词倒排索引的检索模块与加载低频词倒排索引的检索模块之间是相互独立的,两个检索模块之间分别具备相互独立的存储装置,以保证在生成搜索结果时,高频词倒排索引的数据读取操作与低频词倒排索引的数据读取操作是相互独立的。
在本实施例中,所述存储装置,可以包括内存以及磁盘,且对于加载至检索模块中的倒排索引,通常,其中的分词的文档列表存储于磁盘中,以保证文档列表的数据存储空间,而分词对应的文档列表在磁盘中的存储位置则与该分词一起存储在内存中,以利用内存较快的读取速度来进行倒排索引的检索。具体地:
对于分词的文档列表,可以以B+树的形式保存在磁盘中,而在内存中,采用哈希(hash)桶的方式来保证分词以及分词的文档列表在磁盘中的存储位置。如图2所示,在哈希桶21中,每个节点都对应一个分词,且对应的分词在哈希桶中通过hashid来表征,而每个分词对应的文档列表均存储在磁盘内对应的Term node节点中。每个分词的hashid的具体算法如下:
hashid=hash_func(termid,hashnum),
其中,hash_func为哈希函数,具体的哈希函数有多种算法,在此不用于限定本发明,不再一一赘述;termid为通过对分词进行MD5计算等操作所得到的64位无符号整数;hashnum则为当前哈希桶的个数。
在获取到分词的文档列表在磁盘中的存储位置之后,将该存储位置与该分词的termid等索引信息均保存在该分词对应的哈希节点,在进行倒排索引数据读取的时候,只要根据该分词的hashid在哈希桶中确定出该分词对应的哈希节点,并从哈希节点中提取出该分词的索引信息,即能够获取到该分词的文档列表在磁盘中的存储位置,并通过读写磁盘,从相应的存储位置上提取出该分词的文档列表。
在S104中,将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果。
在分别将高频词倒排索引和低频词倒排索引加载到不同的检索模块之后,再经过链接关系计算、特殊文件处理等通用的数据处理过程,搜索引擎就完成了对抓取的文档的预处理,此后,当用户在搜索框输入搜索关键词之后,该搜索关键词会被输入到上述至少一个检索模块,并在输入的检索模块所加载的倒排索引中检索该搜索关键词的文档列表,以生成搜索结果。
作为S104的一种具体实现,可以将获取到的搜索关键词分别并行输入加载高频词倒排索引的检索模块与加载低频词倒排索引的检索模块,同时同步地在高频词倒排索引与低频词倒排索引中进行检索,对于检索出的该搜索关键词的文档列表,作为搜索结果输出。
作为S104的另一种具体实现,可以先将获取到的搜索关键词先输入上述一个检索模块,若检索到该搜索关键词的文档列表,则输出搜索结果,若没有检索到该搜索关键词的文档列表,则再将该搜索关键词输入到另一检索模块,再进行检索。如图3所示,S104具体为:
在S301中,将所述搜索关键词输入其中一个所述检索模块,判断该检索模块对应的倒排索引中是否存在所述搜索关键词的文档列表,是则执行S302,否则执行S303。
在S302中,当该检索模块对应的倒排索引中存在所述搜索关键词的文档列表时,将该文档列表生成为搜索结果。
在S303中,当该检索模块对应的倒排索引中不存在所述搜索关键词的文档列表时,将所述搜索关键词输入另一所述检索模块,在该另一所述检索模块对应的倒排索引中查找所述搜索关键词的文档列表,并生成搜索结果。
在本实施例中,当在任一倒排索引中检索到搜索关键词的文档列表之后,所述将文档列表生成为搜索结果,在实际操作中,还需要对检索到的文档列表中的文档进行打分操作,按照这部分文档与搜索关键词的相关程度对这部分文档进行排列,才能作为最终的搜索结果输出。
在图3所示实施例的基础上,进一步地,所述其中一个所述检索模块包括加载低频词倒排索引的检索模块,所述另一所述检索模块包括加载高频词倒排索引的检索模块。即,先在低频词倒排索引中检索该搜索关键词的文档列表,若检索到该搜索关键词的文档列表,则输出搜索结果,若没有检索到该搜索关键词的文档列表,则再在高频词倒排索引中检索该搜索关键词的文档列表。一方面,由于绝大部分的分词都是低频词,相比于先将搜索关键词在高频词倒排索引中进行检索的方式,先将搜索关键词在低频词倒排索引中进行检索,其检索到文档列表的概率更高;另一方面,由于内存的数据读取速度要远远高于磁盘的数据读取速度,先在低频词倒排索引中检索该搜索关键词的文档列表,虽然低频词的数量较大,检索过程中读写内存的次数较多,但其读取的文档列表的数据量很小,因此,综合上述两个方面,整体来说,先将搜索关键词在低频词倒排索引中进行检索,能够加快倒排索引的检索速度,从而有效提高搜索结果的生成效率。
与此同时,在搜索条件中同时包含多个搜索关键词的情况下,以搜索引擎每秒上传250次搜索请求为例,现有方案中高、低频词的倒排索引混合存储的检索模块每秒需要进行2000次磁盘读写,磁盘毛刺率为0.01%(所述磁盘毛刺是指在读写磁盘时耗时突增,一般每次读写磁盘所需的耗时小于3毫秒,但在磁盘压力比较大的情况下,偶尔会出现耗时大于几百毫秒的情况,称之为毛刺,磁盘毛刺率即指在读写磁盘的过程中毛刺发生的概率),而基于本发明实施例提供的先在低频词倒排索引中检索搜索关键词的文档列表,后在高频词倒排索引中检索搜索关键词的文档列表的方案,由于大部分低频词已被分离出去,因此,加载高频词倒排索引的检索模块每秒仅需要进行250次磁盘读写,且基本不存在磁盘毛刺率,同时,加载低频词倒排索引的检索模块的磁盘毛刺率也低于0.0001%。可以看出,本发明提供的上述方案大大地提高了倒排索引的数据读取效率。
在本实施例中,若经过两个检索模块的检索操作,均没有检索到搜索关键词对应的文档列表,则输出的搜索结果为空,即没有检索到与搜索关键词相关的文档。
作为本发明的一个实施例,对于低频词来说,由于其数量级在十亿量级,若与高频词采用相同的倒排索引存储方式,则会占用过多的内存空间,基于上述原因考虑,图4示出了本发明另一实施例提供的搜索结果的生成方法的实现流程,在本实施例中,图1所示实施例的S103具体为:
将所述高频词倒排索引加载至第一检索模块,将所述低频词倒排索引加载至第二检索模块;
其中,所述将所述低频词倒排索引加载至第二检索模块的具体实现流程如图4所示:
在S401中,生成M个数据块,每个所述数据块中包括了N个低频词的文档列表,所述M和N均为大于1的整数。
在S402中,将每个所述低频词以及该低频词的文档列表所在数据块的存储位置保存在哈希桶中。
即,在第二检索模块的磁盘中,将多个低频词的文档列表打包成一个数据块,并获取到该数据块在磁盘中的存储位置,而在第二检索模块的内存中,仍然采用哈希桶的方式来保存索引信息,只是相比于图2所示实施方式,本实施例的哈希桶的每个节点对应的是一个数据块。具体说来,在哈希桶的每个节点中,存储着一个数据块在磁盘中的存储位置,同时还存储着共享该数据块以存储其文档列表的所有低频词,且共享一个数据块以存储其文档的低频词也共享着一个hashid。
基于上述低频词倒排索引存储方案,当S104中输入的检索模块为所述第二检索模块时,所述在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表的具体实现流程如图5所示:
在S501中,查找所述哈希桶中是否存在所述搜索关键词。
具体地,可以根据哈希函数计算出搜索关键词的hashid,判断哈希桶中是否存在用该计算出的hashid表征的哈希节点。
在S502中,当所述哈希桶中存在所述搜索关键词时,在所述哈希桶中获取所述搜索关键词的文档列表所在数据块的存储位置。
当查找到哈希桶中存在用该计算出的hashid表征的哈希节点时,则根据该hashid找到对应的哈希节点,并提取出该哈希节点保存的数据块存储位置。
在S503中,从所述存储位置中读取并遍历所述搜索关键词的文档列表所在数据块,提取出所述搜索关键词的文档列表。
根据S503中提取出的数据块存储位置,在磁盘中读取并遍历该数据块,从而获取到该搜索关键词的文档列表。
采用本发明图4实施例所示的低频词倒排索引存储方案,能够大大地减少第二检索模块的内存空间占用。如前述的2亿篇文档,500万个高频词的倒排索引用10台机器即可存储,而剩下的14亿低频词的倒排索引仅使用一台机器就可进行存储,而若采用现有的高、低频词的倒排索引混合存储的方案,一台机器仅能存储600万篇文档,2亿篇文档总共需要使用34台机器才能存储完毕,因此,本发明提供的存储方案大大地节约了搜索引擎的硬件成本。
在实际的搜索过程中,可能出现同一时间在搜索框中输入的搜索关键词的数量大于1的情况,需要对每个搜索关键词的搜索结果求交,才能生成最终的搜索结果。此时,如图6所示,S104具体为:
在S601中,将每个所述搜索关键词分别输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索输入的所述搜索关键词的文档列表,分别生成每个所述搜索关键词的搜索结果。
在S602中,将生成的每个所述搜索关键词的搜索结果求交,得到最终的搜索结果。
例如,在搜索框中输入的搜索关键词包括A和B,通过执行S601,得到关于搜索关键词A的文档列表1000条,得到关于搜索关键词B的文档列表4000条,则在S602中,需要对这两部分文档列表求交,解析出其中相同的文档,并将这部分相同的文档进行相关度打分、排序等操作,以输出关于搜索关键词A和B的最终搜索结果。
作为图6所示实施例的一种具体实施方式,可以不需要将多个搜索关键词一一分别输入检索模块,而是可以将包含这多个搜索关键词的词列表一次性地输入检索模块,则在检索模块进行检索的过程中,需要逐一地对输入的词列表中的搜索关键词进行检索,以依次得出每个搜索关键词的搜索结果。同时,在本实施例中,若词列表是以串行的顺序依次输入两个不同的检索模块时,则第一个检索模块检索出的搜索关键词的文档列表也必须一并输入第二个检索模块中,第二个检索模块在对词列表中的搜索关键词进行检索时,首先判断输入的数据中是否包含了当前检索的搜索关键词的文档列表,是则认为该搜索关键词的搜索结果已由第一个检索模块得出,此时第二个检索模块放弃对该搜索关键词的检索,直接进行词列表中下一搜索关键词的处理过程。
本发明实施例分别考虑了高频词的倒排索引与低频词的倒排索引在数据存取时的不同特点,将高、低频词分离,这两类词对应的倒排索引分机存储,相比于将高、低频的倒排索引混合在一起单机存储的方案,本方案在读取倒排索引数据时,降低了内存占用、减少了磁盘读写,从而大大提高了搜索结果的生成效率。
图7示出了本发明实施例提供的搜索结果的生成装置的结构框图,该装置用于运行本发明图1至图6实施例所述的搜索结果的生成方法。为了便于说明,仅示出了与本实施例相关的部分。
参照图7,该装置包括:
分词处理单元71,对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量。
倒排索引生成单元72,分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值。
倒排索引加载单元73,将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置。
搜索结果生成单元74,将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果。
可选地,所述搜索结果生成单元74包括:
判断子单元,将所述搜索关键词输入其中一个所述检索模块,判断该检索模块对应的倒排索引中是否存在所述搜索关键词的文档列表。
第一生成子单元,当该检索模块对应的倒排索引中存在所述搜索关键词的文档列表时,将该文档列表生成为搜索结果。
第二生成子单元,当该检索模块对应的倒排索引中不存在所述搜索关键词的文档列表时,将所述搜索关键词输入另一所述检索模块,在该另一所述检索模块对应的倒排索引中查找所述搜索关键词的文档列表,并生成搜索结果。
可选地,所述其中一个所述检索模块包括加载低频词倒排索引的检索模块,所述另一所述检索模块包括加载高频词倒排索引的检索模块。
可选地,所述倒排索引加载单元73具体用于:
将所述高频词倒排索引加载至第一检索模块,将所述低频词倒排索引加载至第二检索模块。
其中,所述倒排索引加载单元73包括:
数据块生成子单元,生成M个数据块,每个所述数据块中包括了N个低频词的文档列表,所述M和N均为大于1的整数。
保存子单元,将每个所述低频词以及该低频词的文档列表所在数据块的存储位置保存在哈希桶中。
当所述输入的所述检索模块为所述第二检索模块时,所述搜索结果生成单元74包括:
查找子单元,查找所述哈希桶中是否存在所述搜索关键词。
获取子单元,当所述哈希桶中存在所述搜索关键词时,获取所述搜索关键词的文档列表所在数据块的存储位置。
提取子单元,从所述存储位置中读取并遍历所述搜索关键词的文档列表所在数据块,提取出所述搜索关键词的文档列表。
可选地,所述搜索关键词的数量大于1,所述搜索结果生成单元74包括;
第三生成子单元,将每个所述搜索关键词分别输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索输入的所述搜索关键词的文档列表,分别生成每个所述搜索关键词的搜索结果。
求交子单元,将生成的每个所述搜索关键词的搜索结果求交,得到最终的搜索结果。
本发明实施例分别考虑了高频词的倒排索引与低频词的倒排索引在数据存取时的不同特点,将高、低频词分离,这两类词对应的倒排索引分机存储,相比于将高、低频的倒排索引混合在一起单机存储的方案,本方案在读取倒排索引数据时,降低了内存占用、减少了磁盘读写,从而大大提高了搜索结果的生成效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种搜索结果的生成方法,其特征在于,包括:
对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量;
分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值;
将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置;
将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果;
其中,所述将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块包括:
将所述高频词倒排索引加载至第一检索模块,将所述低频词倒排索引加载至第二检索模块;
其中,所述将所述低频词倒排索引加载至第二检索模块包括:
生成M个数据块,每个所述数据块中包括了N个低频词的文档列表,所述M和N均为大于1的整数;
将每个所述低频词以及该低频词的文档列表所在数据块的存储位置保存在哈希桶中;
当所述输入的所述检索模块为所述第二检索模块时,所述在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表包括:
查找所述哈希桶中是否存在所述搜索关键词;
当所述哈希桶中存在所述搜索关键词时,在所述哈希桶中获取所述搜索关键词的文档列表所在数据块的存储位置;
从所述存储位置中读取并遍历所述搜索关键词的文档列表所在数据块,提取出所述搜索关键词的文档列表。
2.如权利要求1所述的方法,其特征在于,所述将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果包括:
将所述搜索关键词输入其中一个所述检索模块,判断该检索模块对应的倒排索引中是否存在所述搜索关键词的文档列表;
当该检索模块对应的倒排索引中存在所述搜索关键词的文档列表时,将该文档列表生成为搜索结果;
当该检索模块对应的倒排索引中不存在所述搜索关键词的文档列表时,将所述搜索关键词输入另一所述检索模块,在该另一所述检索模块对应的倒排索引中查找所述搜索关键词的文档列表,并生成搜索结果。
3.如权利要求2所述的方法,其特征在于,所述其中一个所述检索模块包括加载低频词倒排索引的检索模块,所述另一所述检索模块包括加载高频词倒排索引的检索模块。
4.如权利要求1-3任一项所述的方法,其特征在于,所述搜索关键词的数量大于1,所述将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果包括;
将每个所述搜索关键词分别输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索输入的所述搜索关键词的文档列表,分别生成每个所述搜索关键词的搜索结果;
将生成的每个所述搜索关键词的搜索结果求交,得到最终的搜索结果。
5.一种搜索结果的生成装置,其特征在于,包括:
分词处理单元,用于对抓取的文档进行分词处理,统计每个分词的词频,所述分词的词频用于表示包括该分词的所述抓取的文档的数量;
倒排索引生成单元,用于分别生成高频词倒排索引和低频词倒排索引,所述高频词倒排索引中的所述分词的词频大于预设阈值,所述低频词倒排索引中的所述分词的词频不大于所述预设阈值;
倒排索引加载单元,用于将所述高频词倒排索引和所述低频词倒排索引分别加载至不同的检索模块,所述不同的检索模块之间分别具备相互独立的存储装置;
搜索结果生成单元,用于将搜索关键词输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索所述搜索关键词的文档列表,生成搜索结果;
其中,所述倒排索引加载单元具体用于:
将所述高频词倒排索引加载至第一检索模块,将所述低频词倒排索引加载至第二检索模块;
其中,所述倒排索引加载单元包括:
数据块生成子单元,用于生成M个数据块,每个所述数据块中包括了N个低频词的文档列表,所述M和N均为大于1的整数;
保存子单元,用于将每个所述低频词以及该低频词的文档列表所在数据块的存储位置保存在哈希桶中;
当所述输入的所述检索模块为所述第二检索模块时,所述搜索结果生成单元包括:
查找子单元,用于查找所述哈希桶中是否存在所述搜索关键词;
获取子单元,用于当所述哈希桶中存在所述搜索关键词时,在所述哈希桶中获取所述搜索关键词的文档列表所在数据块的存储位置;
提取子单元,用于从所述存储位置中读取并遍历所述搜索关键词的文档列表所在数据块,提取出所述搜索关键词的文档列表。
6.如权利要求5所述的装置,其特征在于,所述搜索结果生成单元包括:
判断子单元,用于将所述搜索关键词输入其中一个所述检索模块,判断该检索模块对应的倒排索引中是否存在所述搜索关键词的文档列表;
第一生成子单元,用于当该检索模块对应的倒排索引中存在所述搜索关键词的文档列表时,将该文档列表生成为搜索结果;
第二生成子单元,用于当该检索模块对应的倒排索引中不存在所述搜索关键词的文档列表时,将所述搜索关键词输入另一所述检索模块,在该另一所述检索模块对应的倒排索引中查找所述搜索关键词的文档列表,并生成搜索结果。
7.如权利要求6所述的装置,其特征在于,所述其中一个所述检索模块包括加载低频词倒排索引的检索模块,所述另一所述检索模块包括加载高频词倒排索引的检索模块。
8.如权利要求5-7任一项所述的装置,其特征在于,所述搜索关键词的数量大于1,所述搜索结果生成单元包括;
第三生成子单元,用于将每个所述搜索关键词分别输入至少一个所述检索模块,在输入的所述检索模块对应的倒排索引中检索输入的所述搜索关键词的文档列表,分别生成每个所述搜索关键词的搜索结果;
求交子单元,用于将生成的每个所述搜索关键词的搜索结果求交,得到最终的搜索结果。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310631836.7A CN104679778B (zh) | 2013-11-29 | 2013-11-29 | 一种搜索结果的生成方法及装置 |
PCT/CN2014/090370 WO2015078273A1 (en) | 2013-11-29 | 2014-11-05 | Method and apparatus for search |
US15/166,962 US10452691B2 (en) | 2013-11-29 | 2016-05-27 | Method and apparatus for generating search results using inverted index |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310631836.7A CN104679778B (zh) | 2013-11-29 | 2013-11-29 | 一种搜索结果的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104679778A CN104679778A (zh) | 2015-06-03 |
CN104679778B true CN104679778B (zh) | 2019-03-26 |
Family
ID=53198338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310631836.7A Active CN104679778B (zh) | 2013-11-29 | 2013-11-29 | 一种搜索结果的生成方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10452691B2 (zh) |
CN (1) | CN104679778B (zh) |
WO (1) | WO2015078273A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10210262B2 (en) | 2014-06-09 | 2019-02-19 | Ebay Inc. | Systems and methods to identify a filter set in a query comprised of keywords |
US10839441B2 (en) * | 2014-06-09 | 2020-11-17 | Ebay Inc. | Systems and methods to seed a search |
CN105224624A (zh) * | 2015-09-22 | 2016-01-06 | 广州神马移动信息科技有限公司 | 一种实现倒排链快速归并的方法和装置 |
CN106557483B (zh) * | 2015-09-25 | 2020-11-27 | 创新先进技术有限公司 | 一种数据处理、数据查询方法及设备 |
CN105183913B (zh) * | 2015-10-12 | 2019-02-15 | 广州神马移动信息科技有限公司 | 一种查询处理方法、装置及设备 |
US10977284B2 (en) * | 2016-01-29 | 2021-04-13 | Micro Focus Llc | Text search of database with one-pass indexing including filtering |
CN106294595A (zh) * | 2016-07-29 | 2017-01-04 | 海尔优家智能科技(北京)有限公司 | 一种文档存储、检索方法及装置 |
CN110019638A (zh) * | 2017-07-17 | 2019-07-16 | 南京烽火软件科技有限公司 | 一种基于冷热词分离的索引方法 |
CN107861943B (zh) * | 2017-10-20 | 2020-03-24 | 中国地质大学(武汉) | 一种从文档集中快速提取有用数据的方法 |
CN108062406B (zh) * | 2017-12-28 | 2020-08-28 | 中国联合网络通信集团有限公司 | 索引文件的构建方法及装置、检索方法和服务器 |
CN108415903B (zh) * | 2018-03-12 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 判断搜索意图识别有效性的评价方法、存储介质和设备 |
CN108763258B (zh) * | 2018-04-03 | 2023-01-10 | 平安科技(深圳)有限公司 | 文档主题参数提取方法、产品推荐方法、设备及存储介质 |
CN108595400A (zh) * | 2018-04-20 | 2018-09-28 | 广东电网有限责任公司 | 一种基于人工智能的工作报告生成方法 |
CN110222203B (zh) * | 2019-06-19 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 元数据搜索方法、装置、设备及计算机可读存储介质 |
CN110955767A (zh) * | 2019-12-04 | 2020-04-03 | 中国太平洋保险(集团)股份有限公司 | 一种机器人对话系统中生成意图候选集列表集合的算法及装置 |
US11594213B2 (en) | 2020-03-03 | 2023-02-28 | Rovi Guides, Inc. | Systems and methods for interpreting natural language search queries |
US11914561B2 (en) * | 2020-03-03 | 2024-02-27 | Rovi Guides, Inc. | Systems and methods for interpreting natural language search queries using training data |
US11327980B2 (en) * | 2020-04-21 | 2022-05-10 | International Business Machines Corporation | Cached updatable top-k index |
CN111651458A (zh) * | 2020-06-04 | 2020-09-11 | 山东中创软件工程股份有限公司 | 一种市场监管数据检索方法、装置、设备及可读存储介质 |
US11507572B2 (en) | 2020-09-30 | 2022-11-22 | Rovi Guides, Inc. | Systems and methods for interpreting natural language search queries |
CN112163207B (zh) * | 2020-10-30 | 2023-11-21 | 深圳平安智汇企业信息管理有限公司 | 基于动态权限的业务数据查询方法及相关设备 |
US20220318284A1 (en) * | 2020-12-31 | 2022-10-06 | Proofpoint, Inc. | Systems and methods for query term analytics |
CN113127662A (zh) * | 2021-04-13 | 2021-07-16 | 广联达科技股份有限公司 | 构件搜索方法、装置、电子设备及可读存储介质 |
CN113112584B (zh) * | 2021-05-12 | 2022-09-23 | 中南大学湘雅医院 | 具备动力的智能关节增肌矫形支具、控制系统、终端、介质 |
US11550814B1 (en) * | 2021-07-30 | 2023-01-10 | Intuit Inc. | Pagination processing and display of data sets |
US11494397B1 (en) * | 2021-09-16 | 2022-11-08 | Accenture Global Solutions Limited | Data digital decoupling of legacy systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071442A (zh) * | 2007-06-26 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 分布式索引文件的检索方法、检索系统及检索服务器 |
CN101075252A (zh) * | 2007-06-21 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种网络搜索方法及系统 |
CN101271457A (zh) * | 2007-03-21 | 2008-09-24 | 中国科学院自动化研究所 | 一种基于旋律的音乐检索方法及装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5619709A (en) * | 1993-09-20 | 1997-04-08 | Hnc, Inc. | System and method of context vector generation and retrieval |
US5778361A (en) * | 1995-09-29 | 1998-07-07 | Microsoft Corporation | Method and system for fast indexing and searching of text in compound-word languages |
US7017114B2 (en) * | 2000-09-20 | 2006-03-21 | International Business Machines Corporation | Automatic correlation method for generating summaries for text documents |
US6978274B1 (en) * | 2001-08-31 | 2005-12-20 | Attenex Corporation | System and method for dynamically evaluating latent concepts in unstructured documents |
US7324988B2 (en) * | 2003-07-07 | 2008-01-29 | International Business Machines Corporation | Method of generating a distributed text index for parallel query processing |
US20050165750A1 (en) * | 2004-01-20 | 2005-07-28 | Microsoft Corporation | Infrequent word index for document indexes |
JP4754247B2 (ja) * | 2004-03-31 | 2011-08-24 | オセ−テクノロジーズ ビーブイ | 複合語を構成する単語を割り出す装置及びコンピュータ化された方法 |
US7536408B2 (en) * | 2004-07-26 | 2009-05-19 | Google Inc. | Phrase-based indexing in an information retrieval system |
US7689617B2 (en) * | 2005-02-25 | 2010-03-30 | Prashant Parikh | Dynamic learning for navigation systems |
US7499586B2 (en) * | 2005-10-04 | 2009-03-03 | Microsoft Corporation | Photographing big things |
JP5038939B2 (ja) * | 2008-03-03 | 2012-10-03 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報検索システム、方法及びプログラム |
US20090254523A1 (en) * | 2008-04-04 | 2009-10-08 | Yahoo! Inc. | Hybrid term and document-based indexing for search query resolution |
US8359318B2 (en) * | 2008-10-13 | 2013-01-22 | Wolf Garbe | System and method for distributed index searching of electronic content |
US8122043B2 (en) * | 2009-06-30 | 2012-02-21 | Ebsco Industries, Inc | System and method for using an exemplar document to retrieve relevant documents from an inverted index of a large corpus |
US8205025B2 (en) * | 2009-08-12 | 2012-06-19 | Globalspec, Inc. | Efficient buffered reading with a plug-in for input buffer size determination |
US20130218934A1 (en) * | 2012-02-17 | 2013-08-22 | Hitachi, Ltd. | Method for directory entries split and merge in distributed file system |
US8996504B2 (en) * | 2012-05-24 | 2015-03-31 | Sybase, Inc. | Plan caching using density-based clustering |
US20130346424A1 (en) * | 2012-06-21 | 2013-12-26 | Microsoft Corporation | Computing tf-idf values for terms in documents in a large document corpus |
CN103020299B (zh) * | 2012-12-29 | 2016-01-13 | 国家计算机网络与信息安全管理中心 | 全文检索中倒排索引及其追加数据的保存方法及存储装置 |
-
2013
- 2013-11-29 CN CN201310631836.7A patent/CN104679778B/zh active Active
-
2014
- 2014-11-05 WO PCT/CN2014/090370 patent/WO2015078273A1/en active Application Filing
-
2016
- 2016-05-27 US US15/166,962 patent/US10452691B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271457A (zh) * | 2007-03-21 | 2008-09-24 | 中国科学院自动化研究所 | 一种基于旋律的音乐检索方法及装置 |
CN101075252A (zh) * | 2007-06-21 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 一种网络搜索方法及系统 |
CN101071442A (zh) * | 2007-06-26 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 分布式索引文件的检索方法、检索系统及检索服务器 |
Also Published As
Publication number | Publication date |
---|---|
WO2015078273A1 (en) | 2015-06-04 |
US10452691B2 (en) | 2019-10-22 |
US20160275178A1 (en) | 2016-09-22 |
CN104679778A (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679778B (zh) | 一种搜索结果的生成方法及装置 | |
Zhang et al. | Inverted linear quadtree: Efficient top k spatial keyword search | |
CN106484877B (zh) | 一种基于hdfs的文件检索系统 | |
CN103049568B (zh) | 对海量文档库的文档分类的方法 | |
US9946753B2 (en) | Method and system for document indexing and data querying | |
Cambazoglu et al. | Scalability challenges in web search engines | |
CN107491487A (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
US10078697B2 (en) | Computer-implemented method of and system for searching an inverted index having a plurality of posting lists | |
Deshpande et al. | Efficient reverse skyline retrieval with arbitrary non-metric similarity measures | |
CN110889023A (zh) | 一种elasticsearch的分布式多功能搜索引擎 | |
Georgiadis et al. | Efficient rewriting algorithms for preference queries | |
Deng et al. | Information re-finding by context: A brain memory inspired approach | |
CN105550180A (zh) | 数据处理的方法、装置及系统 | |
US8484221B2 (en) | Adaptive routing of documents to searchable indexes | |
CN110413724B (zh) | 一种数据检索方法和装置 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 | |
Doulkeridis et al. | Parallel and distributed processing of spatial preference queries using keywords | |
US9405846B2 (en) | Publish-subscribe based methods and apparatuses for associating data files | |
KR102325249B1 (ko) | 문서단위 검색과 패시지단위 검색을 통합하여 향상된 검색결과를 제공하는 방법 | |
Nalepa et al. | Enhancing similarity search throughput by dynamic query reordering | |
Su et al. | Web crawler model of fetching data speedily based on Hadoop distributed system | |
Wang et al. | Ts-ids algorithm for query selection in the deep web crawling | |
Ragavan | Efficient key hash indexing scheme with page rank for category based search engine big data | |
CN103853796B (zh) | 数据插入方法和装置 | |
Almaslukh et al. | Scalable Spatio-Temporal Top-k Community Interactions Query |
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 |