CN110019647B - 一种关键词搜索方法、装置和搜索引擎 - Google Patents
一种关键词搜索方法、装置和搜索引擎 Download PDFInfo
- Publication number
- CN110019647B CN110019647B CN201711006416.4A CN201711006416A CN110019647B CN 110019647 B CN110019647 B CN 110019647B CN 201711006416 A CN201711006416 A CN 201711006416A CN 110019647 B CN110019647 B CN 110019647B
- Authority
- CN
- China
- Prior art keywords
- character
- index
- keyword
- dictionary
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000012937 correction Methods 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 29
- 238000010276 construction Methods 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 29
- 230000015654 memory Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 239000000306 component Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/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/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- 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
-
- 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
Abstract
本申请公开了一种关键词搜索方法、装置和搜索引擎,所述方法包括:获取关键词和字典倒排树,所述字典倒排树包括:一个根节点和至少一条分支,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,用于指示该索引编号所在分支对应的文档编号;根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配;根据所述目标分支的索引节点,获取所述目标分支对应的索引编号。本方法采用索引编号指示文档编号的方式相比于以哈希表的方式指示,占用资源较少,节约了存储空间。
Description
技术领域
本申请涉及信息搜索领域,尤其涉及一种关键词搜索方法、装置和搜索引擎。
背景技术
智能手机时代,随着用户在手机中存储的数据越来越多,对搜索的需求也越来越大。例如,用户手机往往存储有成千上万张照片,且每张照片都包括如时间、地点、名称、分类等多个属性的信息,如果用户在这成千上万张照片中手动查找自己想要的照片,将十分麻烦,因此需要一种高效智能的搜索引擎(search engine,SE)来提供简单、便利的搜索服务,以提高用户的搜索体验。
索引是搜索引擎中的一个核心部件,它是实现“单词-文档矩阵”的具体数据结构,“单词-文档矩阵”描述了某篇文档包含了哪些单词,以及某个单词出现在哪些文档中等信息。实现这一具体数据结构的常用技术方案是倒排索引(Inverted index)。所述倒排索引主要是根据属性值来查找记录。在倒排索引表中包括某个单词在一个文档或者一组文档中的存储位置,该存储的位置一般用文档编号来表示,因此,通过倒排索引能够搜索出单词所在的文档编号。
但是,目前通过倒排索引查找关键词所对应的文档编号,若采用线性的倒排索引,查询和搜索时需要遍历整个索引,耗时较长,搜索速度较慢。若采用哈希表形式的倒排索引,则需要占用大量的存储资源,相比线性结构的存储资源大5至7倍,所以如何通过倒排索引提供一种速度快,占用资源少的搜索方法,是本领域人员亟待解决的技术问题。
发明内容
本申请提供了一种关键词搜索方法、装置和搜索引擎,以解决目前采用的倒排索引搜索关键词时速度慢、占用资源大的问题。
第一方面,本申请提供了一种关键词搜索方法,所述方法应用于由字典树和倒排索引组成的字典倒排树中,具体地,该方法包括:获取关键词和字典倒排树,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述一个字符包括一个汉字、字母、数字等,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号,且所述索引节点位于所述一条分支的最末端;所述方法还包括根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配,所述关键词包含至少一个字符;以及根据所述目标分支的索引节点,获取所述目标分支对应的索引编号,其中,所述关键词通过文档或文档集合获得。
结合第一方面,在第一方面的一种实现方式中,所述目标分支上的字符节点与所述关键词中的字符相匹配,包括:所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值,当所述阈值为1时,表示所述目标分支上的字符与所述关键词所包含的字符相同,本方面通过匹配目标分支的字符数与关键词中总字符数的比值,能快速地在字典倒排树中确定包含所述关键词的目标分支,进而实现了对关键词的精确查找。
结合第一方面,在第一方面的另一种实现方式中,所述方法还包括:根据所述索引编号在线性倒排表中查找所述关键词的文档编号,所述线性倒排表中包括至少一个索引编号和与每个所述索引编号对应的文档编号,另外,所述线性倒排表中还包括至少一个关键词,且每个关键词与一个索引编号具有唯一的对应关系且每个所述索引编号对应至少一个文档编号,本方面通过线性倒排表建立了索引编号与文档编号的对应关系,进而能够根据目标分支的索引编号快速地查找到对应的文档编号,。
结合第一方面,在第一方面的另一种实现方式中,所述方法还包括:判断所述字典倒排树中一条分支的字符节点上的字符与所述关键词的字符不相同的个数是否在预设值之内;如果在所述预设值之内,则根据所述分支上的字符节点的字符对所述不相同的字符进行纠错。本方面的方法提供了一种纠错功能,可以纠正用户输入关键词时的错别字,实现了智能的搜索引擎功能。
结合第一方面,在第一方面的又一种实现方式中,所述对不相同的字符进行纠错,包括:确定与所述关键词不相同的字符;根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符;利用所述相近似的字符替换所述不相同的字符。此外,还可以通过其它方式,例如预设算法等确定查找与所述相近似的字符,本申请对此不做限定。结合第一方面,在第一方面的又一种实现方式中,如果所述关键词对应的文档编号的个数为两个或两个以上时,则所述确定的至少两个文档编号按照所述线性倒排表中文档编号的顺序排序。本方面按照文档编号对字典倒排树中搜索的关键词所对应的文档进行自动排序,方便用户查找关键词对应的相关文档。
结合第一方面,在第一方面的又一种实现方式中,如果查找多个关键词所对应的文档编号,则所述方法还包括:将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合;统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合;输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。本方面提供了一种多个关键词搜索的功能,实现了多条件简单快速地搜索对应的文档,提高了搜索效率。
结合第一方面,在第一方面的又一种实现方式中,所述字典倒排树还包括至少一个公共字符节点,一个所述公共字符节点连接有至少两个字符节点,形成至少两条分支,所述至少两条分支均包含所述一个公共字符节点,其中,所述两条分支的字符所组成的关键词中,从所述根节点到所述公共字符节点共用相同的字符,从所述公共字符节点的第一个字符节点到每条分支的末端字符节点所对应的字符不同。
本方面提供的方法,利用字典倒排树的结构特点,遍历关键词中每个字符,若存在与关键词相同的分支,则提取该分支的索引字段,并按照该索引字段的指示查找到该关键词在线性倒排表中对应的文档编号。由于采用索引字段指示文档编号相比于以哈希表的方式指示,占用资源较少,所以节约了存储空间,另外,通过逐字遍历关键词的字符,并获取在字典倒排树中包括关键词的目标分支的索引编号,避免遍历整个索引,节约了搜索耗时,提高了搜索效率。
此外,根据字典倒排树还提供一种搜索扩展或查询扩展功能。随着用户输入的关键词,搜索引擎将实时的提示出以输入为前缀的关键词给客户,进一步地提高了搜索效率。
第二方面,本申请还提供了一种关键词搜索装置,该装置包括:获取单元、处理单元和发送单元等。
获取单元,用于获取关键词和字典倒排树,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支的对应的文档编号;
处理单元,用于根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配;
所述获取单元,还用于根据所述目标分支的索引节点,获取所述目标分支对应的索引编号。
结合第二方面,在第二方面的一种实现方式中,所述处理单元,具体用于在所述字典倒排树中查找目标分支,所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值。
结合第二方面,在第二方面的另一种实现方式中,所述处理单元,具体还用于根据所述索引编号,在线性倒排表中查找所述关键词的文档编号,所述线性倒排表中包括至少一个索引编号和与每个所述索引编号对应的文档编号。
结合第二方面,在第二方面的又一种实现方式中,所述处理单元,还用于判断所述字典倒排树中一条分支上的字符与所述关键词的字符不相同的个数是否在预设值之内;如果在所述预设值之内,则根据所述分支上的字符节点的字符对所述不相同的字符进行纠错。
结合第二方面,在第二方面的又一种实现方式中,所述处理单元,具体用于确定与所述关键词不相同的字符,根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符,利用所述相近似的字符替换所述不相同的字符。
结合第二方面,在第二方面的又一种实现方式中,所述处理单元,还用于如果所述关键词对应的文档编号的个数为两个或两个以上时,则所述确定的至少两个文档编号按照所述线性倒排表中文档编号的顺序排序。
结合第二方面,在第二方面的又一种实现方式中,所述处理单元,还用于将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合;统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合;输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。
结合第二方面,在第二方面的又一种实现方式中,所述字典倒排树还包括至少一个公共字符节点,一个所述公共字符节点连接有至少两个字符节点,形成至少两条分支,所述至少两条分支包含所述一个公共字符节点。
第三方面,本申请还提供了一种搜索引擎,包括:至少一个接口、索引层和原始数据层,其中,所述原始数据层中存储有应用数据,所述应用数据中包括关键词;所述索引层中包括字典倒排树,所述字典倒排树用于根据所述原始数据层中的关键词确定所述关键词对应的文档编号,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号;所述至少一个接口用于输出所述文档编号。
结合第三方面,在第三方面的一种实现方式中,所述字典倒排树,具体用于根据所述关键词查找目标分支,根据所述目标分支的索引节点确定所述目标分支对应的索引编号,其中,所述目标分支上的字符节点与所述关键词中的字符相匹配。
结合第三方面,在第三方面的另一种实现方式中,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支;其中,每条所述分支由多个节点依次连接而成,每个所述节点上包含一个字符,且每个所述分支的末端节点连接有一个子节点,所述子节点上设置有索引编号,所述索引编号用于指示该索引编号所在分支的单词对应的文档编号。
结合第三方面,在第三方面的又一种实现方式中,在搜索引擎中还包括算法层,在算法层中包括一系列算法,所述算法层用于对所述字典倒排树输出的文档编号进行排序、构建或更新,以及对所述原始数据层中的关键词进行搜索、纠错、拓展或更新等。
结合第三方面,在第三方面的又一种实现方式中,所述算法库中包括:索引构建单元、查询优化单元和搜索排序单元,所述索引构建单元,用于对索引编号进行添加、删除或更新;所述查询优化单元,用于对所述关键词进行查询拓展或纠错;所述搜索排序单元,用于执行对所述关键词进行搜索和对输出的文档编号进行排序。
本方面所提供的搜索引擎,利用字典倒排树的“字-词”二级索引和线性结构,大大地降低索引大小,节约了内存空间;利用“字典倒排树”这一数据结构和附着在其上的算法,实现了对关键词的快速、准确搜索,以及为用户提供了实时搜索提示、模糊搜索、多条件搜索等具有多个功能的智能搜索引擎,能够满足用户的各种需求。
第四方面,本申请还提供了一种终端,所述终端上包括如第二方面所述的关键词搜索装置或第三方面所述的搜索引擎,该终端包括处理器、收发器和存储器等功能部件,其中,所述存储器中存储有程序或指令,所述处理器可以执行所述存储器中所存储的程序或指令,从而实现以第一方面各种实现方式所述的关键词搜索方法。
第五方面,本申请还提供了一种计算机存储介质,该计算机存储介质可存储有程序,该程序执行时可实现包括本申请提供的关键词搜索方法中的部分或全部步骤。
第六方面,本申请还提供了一种数据结构,该数据结构包括一个根节点,以及与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号。
本申请提供的关键词搜索方法和装置,将字典树与倒排索引相结合,使得结合之后的字典倒排树同时具备字典树和倒排索引两种功能,由于这种字典倒排树的结构将索引节点设置在字典树的外部,进而避免将倒排索引保存在哈希表中,占用较大存储资源,即本申请提供的字典倒排树节约了存储空间,且能够为关键词提供简单快速的搜索服务。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种字典树的结构示意图;
图2a为本申请实施例提供的一种将(2016年,0)添加到字典倒排树的示意图;
图2b为本申请实施例提供的一种将(深圳,0)添加到字典倒排树的示意图;
图2c为本申请实施例提供的一种将(2017年,1)添加到字典倒排树的示意图;
图2d为本申请实施例提供的一种将(深圳,1)添加到字典倒排树的示意图;
图3为本申请实施例提供的一种关键词搜索方法的流程图;
图4为本申请实施例提供的一种利用字典倒排树搜索关键词“深圳”的流程示意图;
图5为本申请实施例提供的一种利用字典倒排树自动纠错的流程示意图;
图6为本申请实施例提供的一种多条件搜索的方法的流程图;
图7为本申请实施例提供的一种基于字典倒排树的相册搜索引擎架构的示意图;
图8为本申请实施例提供的一种相册搜索流程示意图;
图9a为本申请实施例提供的一种搜索提示的示意图;
图9b为本申请实施例提供的一种自动纠错的示意图;
图9c为本申请实施例提供的一种关键词搜索的示意图;
图9d为本申请实施例提供的一种多条件搜索的示意图;
图10为本申请实施例提供的一种关键词搜索装置的结构示意图;
图11为本申请实施例提供的一种搜索引擎的结构示意图;
图12为本申请实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中的技术方案作进一步详细的说明。
在对本发明实施例的技术方案说明之前,首先对本申请的应用场景以及实施例中可能用到的概念和术语进行说明。本申请的技术方案应用于用户在移动终端,例如智能手机上搜索联系人,或者在图库中搜索图片的技术场景。
其中,所述移动终端包括移动电话(cellphone),智能手机(smartphone),计算机(computer),平板电脑(tablet computer),个人数码助理(personal digital assistant,PDA),移动互联网设备(mobile Internet device,MID),可穿戴设备和电子书阅读器(e-book reader)等。
本申请实施例的技术方案提供了一种“字典倒排树”数据结构,该字典倒排树是由字典树(trie)和倒排索引(Inverted index)相结合而成。使得字一级的索引构建在字典树中,词一级索引构建在倒排索引中,从而避免采用哈希表的形式构建倒排索引,节约了存储空间,另外,相比于线性的倒排索引不需要遍历整个索引列表,提高了搜索速度,实现了对关键词的快速方便地搜索。
其中,所述关键词是根据文档或文档集合获得。文档(Document)表示以文本形式存在的存储对象,例如手机中的一条短信、一条联系人信息、一张照片对应的描述信息等都可以称之为文档。文档集合(Document Collection)是由若干文档构成的集合。例如用户手机中2017年1月份拍摄的照片集合就属于一个文档集合。文档编号(Document ID):在搜索引擎内部,会将文档集合内每个文档赋予一个唯一的内部编号,以此编号来作为这个文档的唯一标识,以方便内部处理,这个内部编号即称之为“文档编号”。
首先,对倒排索引的概念和结构进行介绍。倒排索引也称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引的结构包括单词和文档集合。
举例说明,假设有5张照片,照片的属性,比如包括拍摄时间、拍摄地点、照片标签,如下表1所示:
照片编号 | 拍摄时间 | 拍摄地点 | 照片标签 |
1 | 2016年12月 | 深圳 | 风景 |
2 | 2016年12月 | 北京 | 风景 |
3 | 2017年1月 | 深圳 | 风景 |
4 | 2017年2月 | 北京 | 美食 |
5 | 2017年2月 | 深圳 | 美食 |
表1
根据该表1的文档信息,制作成对应的倒排索引结构如下表2所示:
单词 | 文档集合 |
2016年 | 1,2 |
12月 | 1,2 |
深圳 | 1,3,5 |
风景 | 1,2,3 |
北京 | 2,4 |
2017年 | 3,4,5 |
1月 | 3 |
表2
当用户要搜索“2016年”相关的照片,在上述倒排索引中找到“2016年”对应的条目,输出后面的文档集合,即照片1和照片2。通过倒排索引,可以根据单词快速获取包含这个单词的文档集合。在倒排索引结构中,每条记录称为一个倒排项,倒排项将某个单词映射到出现过这个单词的所有文档集合。
其次,对字典树的概念和结构进行介绍。字典树可称为trie树,用于存储大量的字符串以便支持快速匹配,是实现检索词联想的常用数据结构。搜索引擎会将所有的单词构建到trie树中,树中每个字符节点存储一个字符,从根节点到某个外部字符节点,路径上经过的字符连接起来,对应某个关键词。
例如,在之前对倒排索引的介绍里所有的单词构建成的字典树如图1所示,其中“#”表示该字典树的根节点,深色边框节点为字符节点。在一个具体的应用过程中,当用户输入字符“2”时,搜索引擎在字典树中找到“2”对应的字符节点,然后输出以该字符节点为根节点的所有路径对应的单词,即“2月”、“2016年”、“2017年”为搜索提示的结果。
下面就本申请实施例提供的“字典倒排树”的特点和结构进行详细的说明。本申请提供了一种以“字典倒排树”为数据结构的搜索部件,该数据结构由字典树和线性倒排表组成,且具体包括如下特点:
1.字典倒排树包括一个根节点和若干个分支组成,其中,所述根节点不包含字符,除根节点外的其他每一个字符节点都包含一个字符。
2.根节点外的其他节点可以分为外部节点和内部节点。
3.从根节点到某一外部节点,路径上经过的字符连接起来,对应某一单词或关键词。
4.线性倒排表的每一行包含了某个关键词及含有该关键词的文档集合,文档集合按文档编号顺序存储。
5.每个外部节点有一个索引节点,该索引节点上上包含一个索引编号,该索引编号用于该索引编号所在分支对应的文档编号。
基于该“字典倒排树”的数据结构,构建字典倒排树将索引编号设置在字典树中,包括在字典倒排树上添加、删除及更新索引字段,并且基于该字典倒排树的特点,提出新的查询扩展、自动纠错、关键词搜索等算法,以及支撑关键词搜索、搜索提示、拼写纠错等功能的方法。
实施例一
本实施例提供一种字典倒排树的构建方法,用于将字典树与倒排索引进行结合。该方法包括如下步骤:
步骤1:获取一个文档,将文档通过分词算法拆分成由若干个关键词,每个所述关键词由多个字符组成,组成每个所述关键词的所有字符的顺序为字符顺序;所述字符可以是文字、数字或字母等。
步骤2:设置字典倒排树的根节点和若干个字符节点,其中,设置的字符节点个数与关键词的字符数相同。
步骤3:从所述根节点开始,将所述拆分的一个关键按照所述字符顺序配置在所述分支的字符节点上,再将路径上经过的字符节点连接起来形成字典倒排树的一条分支。
步骤4:设所述分支的最后一个节点为外部节点,在每个所述外部节点上设置一个索引节点。
步骤5:在所述索引节点上配置一个索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号。
上述步骤1至步骤5为将一个关键词设置在字典倒排树形成一条分支的过程,按照该方法,同理地,可以将其他关键词也分别构建成不同的分支,并与根节点相接,形成字典倒排树。
需要说明的是,在添加新词到字典倒排树的过程中,若新增关键词的部分字符节点已经存在字典倒排树中,则以相同字符的最后一个字符节点起始,只需要将不同的字符构建成新的分支添加在原来的字典倒排树中即可。
在一个具体的实施例中,假设原始数据包含两个文档,如下表3所示,第一个文档含有两个关键词:2016年、深圳;第二文档也含有两个关键词:2017年、深圳。对该数据构建索引的过程即为依次将(2016年,0),(深圳,0),(2017年,1),(深圳,1)这四组(关键词,文档编号)二元对添加到字典倒排树的过程。
文档编号 | 关键词 |
0 | 2016年,深圳 |
1 | 2017年,深圳 |
表3
具体地,如图2a所示,将(2016年,0)构建为字典倒排树的过程如下:
Step1:初始时字典倒排树为空,只有一个根节点;
Step2:为根节点添加一个字符节点,该字符节点中包含字符“2”;
Step3:为字符节点“2”添加一个字符节点“0”;
Step4:为字符节点“0”添加一个字符节点“1”;
Step5:为字符节点“1”添加一个字符节点“6”;
Step6:为字符节点“6”添加一个字符节点“年”;
Step7:因字符“年”已是关键词“2016年”的最后一个字符,所以将其设为外部节点,同时在线性倒排表中添加一行,包含关键词“2016年”及文档编号“0”,为外部节点“年”添加一个索引节点,该索引节点中包含索引编号“0”,表示该索引节点对应的关键词在线性倒排表中的位置。
同理地,将(深圳,0)添加到字典倒排树的过程与上面的过程类似,最后需要在线性倒排表中添加新的一行,添加之后的字典倒排树如图2b所示。接着,将(2017年,1)添加到字典倒排树中,由于“2017年”的前缀“201”已在字典树中,所以只需将不同的字符继续添加在字典树中即可,在节点“1”之后继续添加“7年”两个字符节点。并且,在外部节点“年”之后增设一个索引节点,添加之后的字典倒排树如图2c所示。
最后,将(深圳,1)添加到字典倒排树中,由于关键词“深圳”已在字典倒排树中,所以只需找到其外部节点的索引节点,然后在线性倒排表中的相应位置添加文档编号即可。添加之后的字典倒排树下图2d所示。
本实施例提供的字典倒排树建立方法,将字典树与倒排索引相结合,使得结合之后的字典倒排树同时具备字典树和倒排索引两种功能,由于这种字典倒排树的结构将索引节点设置在字典树的外部,进而避免将倒排索引保存在哈希表中,占用较大存储资源,即本实施例提供的字典倒排树节约了存储空间,且能够为关键词提供简单快速的搜索服务。
实施例二
本实施例在实施例一的基础上提供了一种关键词搜索方法,用于为关键词快速查找其对应的文档编号,以解决利用线性的倒排索引查询关键词需要遍历整个索引,耗时长、速度慢的问题。
如图3所示,本实施例所述的关键词搜索方法包括如下步骤:
步骤301:获取关键词和字典倒排树。
其中,所述关键词可以通过对文档进行拆分获得。所述字典倒排树可以通过实施例一所述的构建方法获得,具体地,字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支由多个字符节点依次连接而成,每个所述字符节点上包含一个字符,且每条所述分支的末端字符节点连接有一个索引节点,所述索引节点上包含有索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号。
步骤302:根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配。
进一步地,所述相匹配具体包括:所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值。
步骤303:根据所述目标分支的索引节点,获取所述目标分支对应的索引编号。
具体地,根据所述索引编号确定所述关键词对应的文档编号,包括:将所述索引编号转到线性倒排表中,所述线性倒排表中包括索引编号和与所述索引编号对应的文档编号;根据所述索引编号和文档编号的所述对应关系确定所述关键词的文档编号。其中,由于一个关键词可以出现在多个文档中,所以一个关键词可以对应多个文档编号。
进一步地,在上述步骤302中,遍历字典倒排树查找关键词的过程具体包括:
首先,从字典倒排树的根节点开始,按照关键词的字符顺序遍历,若当前字符节点的一个节点中存在当前字符,转到该字符对应的分支继续遍历;若不存在当前字符,则说明字典倒排树中不存在该查询的关键词,退出。其次,当关键词中的字符都遍历完之后,查看最后一个字符节点是否存在索引节点:若存在,则取出该索引节点中包含的索引编号,转到线性倒排表中的对应位置,获取其中的文档编号列表作为结果返回;若不存在索引节点,则说明字典倒排树中不存在该关键词,退出并结束本次搜索。
在一个具体的实施例中,用户点击搜索提示中的关键词,或者输入完整的关键词后点击搜索按钮,搜索引擎将展示该关键词对应的文档集合。关键词搜索的过程,首先在字典倒排树中查找关键词对应的字符节点,利用字符节点和索引节点查找该索引编号所在分支对应的文档编号,即找到该关键词在倒排索引中的位置,实现快速查找到相关的文档集合。
如图4所示,以上面构建好的字典倒排树为例,假设用户输入的关键词为“深圳”,则具体的搜索方法流程为:
步骤1:在根节点的一个字符节点中查找字符节点“深”;
步骤2:在字符节点“深”的子节点中查找字符节点“圳”;
步骤3:由于字典倒排树中存在一个分支包含“深圳”,且节点“圳”为外部节点,根据字符节点“圳”的索引节点,找到关键词“深圳”在线性倒排表中的位置,输出线性倒排表中存储的文档列表即可。
根据图4所示,关键词“深圳”搜索的文档编号为{0,1},即包含该关键词的文档集合有文档0和文档1,并且由于线性倒排表中的文档列表是按文档编号顺序插入的,所以最终搜索到的文档集合也是排序过的。
如果在该字典倒排数中不存在“深圳”这一关键词,则可以选择退出搜索,或者,将“深圳”一词建立一个新的分支,添加到字典倒排树中。如果用户搜索的关键词的一部分字符在字典倒排树中,另一部分字符不在,则在创建新的分支时,可以以相同字符的最后一个节点字符为公共字符节点,设置所述新的分支中的字符节点数量与所述不相同字符节点的数量相同;然后将关键词中不相同的字符填充在所述新的分支节点上,并依次连接所述公共字符节点和新设置的字符节点形成新的分支。
例如,关键词是“深圳大道”,在字典倒排树中只存在“深圳”单词,但是没有“深圳大道”,所以在构建新的分支时,以相同的最后一个字符节点“圳”为公共字符节点,在该公共字符节点“圳”后新增两个字符节点“大”和“道”,形成一个新的分支,并在该新的分支的末端字符节点“道”后配置一个索引节点,且该索引节点中包含一个文档编号。
本实施例提供的关键词搜索方法,利用字典倒排树的结构特点,遍历关键词中每个字符,若存在与关键词相同的分支,则提取该分支的索引字段,并按照该索引字段的指示查找到该关键词在线性倒排表中对应的文档编号。由于采用索引节点指示文档编号相比于以哈希表的方式指示,占用资源较少,所以节约了存储空间,另外,通过逐字遍历关键词的字符,并获取在字典倒排树中包括关键词的目标分支的索引编号,避免遍历整个索引,节约了搜索耗时,提高了搜索效率。
此外,在本实施例中,根据字典倒排树还提供一种搜索扩展或查询扩展功能。随着用户输入的关键词,搜索引擎将实时的提示出以输入为前缀的关键词给客户。扩展的过程是在字典倒排树中查找某条路径的过程。
以图4所示的字典倒排树为例,假设用户输入的关键词为“20”,本发明的查询扩展方法流程为:首先,在根节点的子节点中查找字符节点“2”;然后,在字符节点“2”的子节点中查找字符节点“0”;接着,找出字符节点“0”的后裔字符节点中的所有外部节点,根据这些外部节点的索引节点,找到它们在线性倒排表中的位置,最后,输出线性倒排表中存储的关键词所对应的文档编号即可。本例中,通过搜索拓展为关键词“20”提供的包含有“20”的扩展词有“2016年”、“2017年”。
本实施例所述的扩展方法,为用户在只知道部分字符的情况下,提供包含所述部分字符的所有关键词,从而为用户进行查找提供相关信息,帮助用户提高搜索效率。
实施例三
在上述实施例所述的关键词搜索方法过程中,还提供了一种自动纠错功能。用于在用户输入的关键词中有错字、多字、漏字等错误时,字典倒排树对其自动纠错,并且将与关键词最相近的词提示给用户。
一种可能的实现方式是,通过控制待搜索的关键词允许出错的字数,来调整自动纠错提示出的相似关键词数量。进一步地,用户输入关键词搜索后,当判断不存在目标时,则检测用户输入的关键词是否存在错字、多字、漏字等错误,即判断字典倒排树中一条分支上的字符与所述关键词的字符不相同的个数是否在预设值之内,如果在所述预设值之内,则对所述不相同的字符进行纠错,使纠错后的字符与所述目标分支上的字符相同。
具体地,对不相同的字符进行纠错包括:确定与所述关键词不相同的字符,根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符,利用所述相近似的字符替换所述不相同的字符,使得纠正后的字符与所述字典倒排树的一条分支上的字符相同。其中,所述拼音包括读音上的相似,例如平舌音、翘舌音,还包括声调等;所述字形规则包括相似字,或易混淆字等,本实施例对此不具体限制。
此外,另一种实现方式是根据纠错的查找算法对不相同的字符进行纠错,所述查找算法为:T(ni,c,k)={(nj,c′,k′)},其中,T表示一个函数运算符号,()中的符号表示纠错前的状态,{}中的符号表示纠错后的状态,ni表示纠错前匹配的节点,c表示待检测的关键词中的字符,k表示纠错前在ni节点检测的不相同的字符数,nj表示纠错后的节点,c′表示纠错后相同的字符,k′表示纠错后在nj节点检测的不相同的字符数。
在一个具体的实施例中,原始的字典树查找是一种精确匹配的过程,可以用T(ni,c)=nj表示,即当前状态处于字符节点ni,待匹配关键词中的字符用c表示,下一步将转移到字符节点nj。自动纠错的查找算法可以表示为T(ni,c,k)={(nj,c′,k′)},其中k为当前出错的字数,模糊搜索每一步可能转移到多个字符节点。
例如,假设一种字典倒排树的结构如图5所示(只展示了字典倒排树的一部分),该字典倒排树中存储了“天安云谷”和“天安阁”两个单词,每个节点右侧的小号数字表示节点的编号,当用户输入“天安元谷”后,判断有一个字符“元”与存储的单词不同,且在预设值之内。启动自动纠错流程。
步骤1:在根节点的字符节点中查找到节点“天”,可表示为T(n0,“天”,0)=(n1,0),即在节点n0,匹配到字符“天”之后,转移到下一字符节点n1,因为精确匹配,故当前出错的字数为0。
步骤2:在字符节点“天”的字符节点中查找到字符节点“安”,可表示为T(n1,“安”,0)=(n2,0)。
步骤3:在字符节点“安”的字符节点中无法找到字符节点“元”,但其中一个字符节点中的字符“云”与“元”拼音相似,此时尝试自动纠错,模糊匹配节点“云”(图中用虚线表示),可表示为T(n2,“云”,0)=(n3,1),即转移到字符节点n3,并将当前出错的字数记录为1。
步骤4:在字符节点“云”的字符节点中查找到字符节点“谷”,可表示为T(n3,“谷”,1)=(n5,1),匹配结束,字典倒排树将关键词“天安元谷”自动纠错为“天安云谷”。
此外本实施例还可以利用其它算法实现关键词的自动纠错功能,本实施例对具体的纠错算法不予限制。
实施例四
基于上述各个实施例所述的字典倒排树,本实施例提供了一种多条件搜索方法,用于为用户提供多条件搜索服务功能。具体地,在用户查找多个关键词所对应的文档编号时,按照与前述实施例二中对一个关键词进行搜索方法(步骤301至步骤303)对其它的关键词也逐一搜索。
用户在某次搜索的基础上,可以继续输入关键词进行多条件组合搜索。判断两个(或者多个)关键词进行组合搜索的结果是否为空,通过对多个关键词对应的文档列表求交集,判断交集是否为空来实现。
其中,需要说明的是,由于字典倒排树中文档列表都是顺序排列的,所以求交集的复杂度可以表示为O(m+n),并且取交集后的输出结果也是有序集合。
如图6所示,为本实施例提供的一种多条件搜索的方法的流程图。该方法包括如下:
步骤601:将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合。
步骤602:统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合。
步骤603:输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。
在一种具体的实现中,以图2d所示的字典倒排树结构为例,假设用户输入的组合关键词组为“2017年深圳”,按照上述步骤601至603所述的流程,在字典倒排树中找到出现“2017年”的文档编号为1,对应的文档编号集合为{1};在字典倒排树中找到出现“深圳”的文档编号集合为{0 1},求这两个文档编号集合{1}和{0 1}的交集{1}作为“2017年深圳”的文档编号集合,即含有“2017年”和“深圳”两个关键词的文档集合为文档1。
本实施例在字典倒排树的基础上,提供了一种多条件搜索方法,实现了多条件快速搜索功能,节约搜索时长,提高了搜索效率。
实施例五
在一个具体的应用实施例中,以智能手机相册搜索为例,对上述各个实施例的方法进行完整介绍。
如图7所示,表示一种基于字典倒排树的相册搜索引擎架构。该架构将整个相册的搜索引擎分为离线和在线两部分。其中,离线部分主要用于完成字典倒排树的构建,包括数据预处理和索引构建;在线部分则通过搜索引擎开放的搜索提示、拼写纠错、关键词搜索三个接口,响应用户输入,并输出搜索结果给用户。
在索引构建之前需要进行数据预处理,将相册数据转化为字典倒排树构建时需要的数据格式。例如,假设手机相册的原始数据存储在如下的表结构中,用户手机中存储了上万张照片,每张照片都有时间、地点、名称、分类等多个属性:
照片编号 | 时间 | 地点 | 分类 |
1 | 2016年12月2日 | 广东省深圳市福田区 | 美食 |
2 | 2016年12月15日 | 北京市海淀区 | 风景 |
3 | 2017年1月12日 | 广东省深圳市龙岗区五和大道 | 人物 |
… | … | … | … |
表4
数据预处理将每一行数据转化为多组(关键词,文档编号)二元对,对于不同的属性处理方式也不相同,例如:按时间顺序分割为年、月、日三个关键词,地点分割为省、市、区/县、路等多个关键词,以便用户可以分别使用这些关键词进行搜索,也可以组合搜索。以第一行数据为例,数据预处理后将得到以下六组(关键词,文档编号)二元对:
(2016年,1)、(12月,1)、(2日,1)、(广东省,1)、(深圳市,1)、(福田区,1)、(美食,1)。
根据这些二元对,利用上述实施例一的字典倒排树的构建方法和实施例二的关键词搜索方法对每个二元对进行搜索。由于相册中的标签(时间、地点、分类都可以看作照片的标签)较多,照片结果展示消耗资源较大,且实时展示对手机图像渲染压力较大,因此搜索时先使用搜索提示和拼写纠错功能响应用户输入,给出标签提示词,当用户主动点击提示词时,才进行最后的关键词搜索,将搜索到的对应的照片集合展示给用户。
如图8所示,用户在手机相册应用的搜索框内输入关键词,搜索提示模块实时的提示出相关的提示词;随着用户的不断输入,提示词也在动态的变化;如果搜索提示模块检测不到相关的提示词,则用户输入中可能存在拼写错误,引擎尝试进行拼写纠错,并提示出纠错后的提示词;当用户点击某个提示词时,关键词搜索模块进行搜索排序,显示出对应的照片集合;在一次搜索的基础上,用户也可以继续输入,进行多条件组合搜索。
例如图9a所示,当用户输入关键字“深”时,系统提示出“深圳市”、“深圳湾”、“深南大道”等以“深”字为前缀的关键词;随着用户继续输入“圳”,搜索引擎将去掉“深南大道”,只提示以“深圳”为前缀的关键词。
如图9b所示,当用户输入“天安谷”时,搜索引擎找不到相关的提示词,故进行拼写纠错,将与查询串最相似的关键词“天安云谷”和“天安阁”提示给用户。
确定关键词为之后,用户点击搜索提示中的关键词,搜索引擎将展示该关键词对应的照片集合,按照时间顺序进行展示,如图9c所示。
如图9d所示,用户在某次检索的基础上,可以继续输入关键词进行多条件组合搜索。当用户将焦点设置到搜索框中时,已有的检索关键词将变成可选条件,图片结果展示将会虚化,用户继续输入时仍然会有搜索提示。另外,只有当后面的关键词与当前已有的关键词进行组合搜索结果不为空时,搜索引擎才会提示该关键词。
该关键词给出后,按照前述实施例的关键词搜索方法,输出该关键词所对应的文档编号,以及展示所述文档编号所对应的图片。
本实施例利用字典倒排树对关键词进行搜索,由于字典倒排树中包括索引字段,指示关键词在线性倒排表中的位置,从而避免采用哈希表,节约了存储资源。另外,通过字典树遍历查找关键词能够节约搜索时间,提高搜索效率。
此外,本实施例基于这种字典倒排树的数据结构,在降低内存占用的同时,还支持搜索提示、关键词搜索、自动纠错以及多条件搜索等功能,为用户提供了智能的搜索平台,满足用户的需求,提高了用户的搜索体验。
具体地,通过表5所示,统计了对31000张照片的相册数据构建索引,占用的内存资源,以及搜索提示、自动纠错和多条件搜索的时延结果。
表5
可见,本实施例的技术方案,利用索引字段指示内存占用只有35MB,搜索提示和关键词搜索的时延在5ms以内,自动纠错和多条件搜索的时延在10ms以内。无论从内存资源占用还是搜索时延方面,都较现有方法有巨大的改进。
同理地,本申请还可以对手机上的联系人进行搜索,例如,以联系人的姓名和手机号为关键词来搜索,具体地搜索过程与实施例五中“手机相册”的搜索方法相同,不再赘述。
实施例六
本申请还提供一种关键词搜索装置,用于实现上述各个实施例所述的方法步骤。具体地,如图10所示,该搜索装置包括:获取单元1001和处理单元1002,此外,该装置还可以包括发送单元和存储单元等,本实施例对此不予限制。
获取单元1001,用于获取关键词和字典倒排树,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号。
处理单元1002,用于根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配。
具体包括:遍历所述字典倒排树,查找在所述字典倒排树中是否存在目标分支,所述目标分支上的从根节点起经过中间字符节点到末端字符节点所组成的单词与所述关键词相同,或者,所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值。
所述获取单元1001,还用于根据所述目标分支的索引节点,获取所述目标分支对应的索引编号。
其中,所述字典倒排树还包括至少一个公共字符节点,一个所述公共字符节点连接有至少两个字符节点,形成至少两条分支,且所述至少两条分支包含所述一个公共字符节点。,即从所述根节点到所述公共字符节点共用相同的字符,从所述公共字符节点下的第一个字符节点到分支的末端节点所对应的字符不同。
可选的,在本实施例的一种实现方式中,处理单元1002,还用于根据所述索引编号,在线性倒排表中查找所述关键词的文档编号,所述线性倒排表中包括至少一个索引编号和与每个所述索引编号对应的文档编号。另外,在所述线性倒排表中还包括关键词等信息。可选的,在本实施例的另一种实现方式中,处理单元1002,还用于判断所述字典倒排树中一条分支上的字符与所述关键词的字符不相同的个数是否在预设值之内;如果在所述预设值之内,则根据所述分支上的字符节点的字符对所述不相同的字符进行纠错;如果不在所述预设值之内,则退出纠错功能,结束本次搜索。
可选的,在本实施例的另一种实现方式中,处理单元1002,具体用于确定与所述关键词不相同的字符,根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符,利用所述相近似的字符替换所述不相同的字符。
可选的,在本实施例的另一种实现方式中,处理单元1002,还用于如果所述关键词对应的文档编号的个数为两个或两个以上时,则所述确定的至少两个文档编号按照所述线性倒排表中文档编号的顺序排序。
可选的,在本实施例的另一种实现方式中,处理单元1002,还用于将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合;统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合;输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。
本申请的实施例还提供一种搜索引擎,用于执行前述各个实施例的方法步骤,如图11所示,该搜索引擎包括:至少一个接口、索引层和原始数据层。
其中,所述原始数据层中存储有应用数据,所述应用数据中包括关键词;所述索引层中包括字典倒排树,所述字典倒排树用于根据所述原始数据层中的关键词确定所述关键词对应的文档编号,所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号;所述至少一个接口用于输出所述文档编号。
其中,所述字典倒排树具体用于根据所述关键词查找目标分支,根据所述目标分支的索引节点确定所述目标分支对应的索引编号,其中,所述目标分支上的字符节点与所述关键词中的字符相匹配。
可选的,所述搜索引擎中还包括算法层,用于对所述字典倒排树输出的文档编号进行排序、构建或更新,以及对所述原始数据层中的关键词进行搜索、纠错、拓展或更新。
进一步地,所述算法层中包括:索引构建单元、查询优化单元和搜索排序单元。所述索引构建单元,用于对索引编号进行添加、删除或更新;所述查询优化单元,用于对所述关键词进行查询拓展或纠错;所述搜索排序单元,用于执行对所述关键词进行搜索和对输出的文档编号进行排序。
本实施例所提供的搜索引擎,利用字典倒排树的“字-词”二级索引和线性结构,大大地降低索引大小,节约了内存空间;利用“字典倒排树”这一数据结构和附着在其上的算法,实现了对关键词的快速、准确搜索,以及还提供了实时搜索提示、模糊搜索、多条件搜索等功能。
在具体硬件的实施例中,上述关键词搜索装置或搜索引擎可以通过终端来承载,用于实现关键词搜索的方法。
如图12所示,所述终端可以包括收发器121、处理器122和存储器123,所述收发器可以包括接收机、发射机与天线等部件。所述终端还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置,本申请对此不进行限定。
处理器122为终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器123内的软件程序和/或模块,以及调用存储在存储器123内的数据,以执行终端的各种功能和/或处理数据。所述处理器122可以由集成电路(integratedcircuit,IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器122可以仅包括中央处理器(central processingunit,CPU),也可以是GPU、数字信号处理器(digital signal processor,DSP)、的组合。
收发器121用于实现终端与其它设备之间的数据传输。所述收发器121中的各种收发模块一般以集成电路芯片(integrated circuit chip)的形式出现。所述收发器121可以包括基带芯片、射频芯片以及相应的天线以在一个蜂窝通信系统中提供通信功能。
存储器123可以包括易失性存储器(volatile memory),例如随机存取内存(random access memory,RAM);还可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-statedrive,SSD);所述存储器还可以包括上述种类的存储器的组合。所述存储器中可以存储有程序或代码,处理器122通过执行所述存储器中程序或代码可以实现终端的关键词搜索功能。
在上述实施例中,图10所示的获取单元1001所要实现的功能可以由所述终端的收发器121来实现,或者由处理器122控制的收发器121来实现;所述处理单元1002所要实现的功能则可以由所述处理器122实现。所述存储器123用于存储算法、字典倒排树和应用数据等信息,为搜索提供必要的数据。
此外,所述终端可以是指向用户提供语音和或数据连通性的设备,具有无线连接功能的手持式设备,或连接到无线调制解调器的其它处理设备。进一步地,终端可以是移动终端,如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或车载的移动装置,它们与无线接入网交换语言和或数据。例如,个人通信业务(personal communication service,PCS)电话、无绳电话、会话发起协议(session initiation protocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)等设备。还可以是接入终端(accessterminal,AT)、用户终端(user terminal,UT)、用户代理(user agent,UA)、用户设备、或用户装备(user equipment,UE),本申请实施例并不限定。
在具体实现中层面,本申请还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本申请提供的关键词搜索方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
另外,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例所述的关键词搜索方法。
具体地,在软件实现层面,本实施例还提供了一种搜索引擎。如图11所示,该搜索引擎中包括接口层、索引层和原始数据层。
其中,原始数据层中存储有应用数据,所述应用数据中包括关键词,文本、照片、手机联系人等信息。所述索引层中包括字典倒排树,所述字典倒排树用于根据所述原始数据层中的关键词确定所述关键词对应的文档编号;所述接口层中可以设置至少一个接口,例如,索引构建接口、关键词搜索接口、搜索提示接口和拼写纠错接口等。所述接口可用于与外界进行数据交互,例如向用户输出关键词搜索出来的文档编号。
所述字典倒排树包括:一个根节点,与所述根节点相连接的至少一条分支。其中,每条所述分支包含至少一个字符节点和一个索引节点,一个所述字符节点包含一个字符,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号;。
可选的,在所述搜索引擎中还包括算法层,用于对所述字典倒排树输出的文档编号进行排序、构建和更新,以及对所述原始数据层中的关键词进行搜索、纠错、拓展和更新,利用一系列算法实现智能化的搜索功能。例如所述算法包括:索引添加、索引删除、索引更新、查询拓展、自动纠错、关键词搜索或结果排序等。还可以根据用户需求自行配置其它功能的算法,对此本申请不予限定。
一种具体的实现方式是,将所述算法层中的多个算法按照功能不同进行划分,形成不同的单元。例如将该算法层划分为:索引构建单元、查询优化单元和搜索排序单元。具体地,所述索引构建单元,用于对索引编号进行添加、删除或更新;所述查询优化单元,用于对所述关键词进行查询拓展或纠错;所述搜索排序单元,用于执行对所述关键词进行搜索和对输出的文档编号进行排序。各个单元之间可以互相通信,以实现多功能智能搜索。
本实施例中的搜索引擎的全部或部分功能可以通过终端的处理器来实现,或者通过上述关键词搜索装置的处理单元来实现。在接口层中的各个接口的功能可以由收发器或获取单元/发送单元来实现。存储器用于存储各种算法、字典倒排树、线性倒排表和应用数据等信息。
上述所述搜索引擎中各个层之间的功能均可以通过计算机程序代码来实现。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种关键词搜索方法,其特征在于,方法包括:
获取关键词和字典倒排树,所述字典倒排树包括:字典树和至少一个索引节点,所述字典树包括一个根节点,以及与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点,一个所述字符节点包含一个字符,所述索引节点设置在所述分支上,每条所述分支上设置一个所述索引节点,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号;
根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配;
根据所述目标分支对应的索引节点,获取所述目标分支对应的索引编号。
2.根据权利要求1所述的方法,其特征在于,所述目标分支上的字符节点与所述关键词中的字符相匹配,包括:
所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值。
3.根据权利要求1所述的方法,其特征在于,所述字典倒排树包括线性倒排表,所述线性倒排表中包括至少一个索引编号和与每个所述索引编号对应的文档编号,所述方法还包括:
根据所述索引编号,在所述线性倒排表中查找所述关键词的文档编号。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
判断所述字典倒排树中一条分支的字符节点上的字符与所述关键词的字符不相同的个数是否在预设值之内;
如果在所述预设值之内,则根据所述分支上的字符节点的字符对所述不相同的字符进行纠错。
5.根据权利要求4所述的方法,其特征在于,所述对不相同的字符进行纠错,包括:
确定与所述关键词不相同的字符;
根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符;
利用所述相近似的字符替换所述不相同的字符。
6.根据权利要求3所述的方法,其特征在于,
如果所述关键词对应的文档编号的个数为两个或两个以上时,则所述确定的至少两个文档编号按照所述线性倒排表中文档编号的顺序排序。
7.根据权利要求3所述的方法,其特征在于,如果查找多个关键词所对应的文档编号,则所述方法还包括:
将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合;
统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合;
输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。
8.根据权利要求1-7任一项所述的方法,其特征在于,
所述字典倒排树还包括至少一个公共字符节点,一个所述公共字符节点连接有至少两个字符节点,形成至少两条分支,所述至少两条分支均包含所述一个公共字符节点。
9.一种关键词搜索装置,其特征在于,装置包括:
获取单元,用于获取关键词和字典倒排树,所述字典倒排树包括:字典树和至少一个索引节点,所述字典树包括一个根节点,以及与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点,一个所述字符节点包含一个字符,所述索引节点设置在所述分支上,每条所述分支上设置一个所述索引节点,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支的对应的文档编号;
处理单元,用于根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配;
所述获取单元,还用于根据所述目标分支对应的索引节点,获取所述目标分支对应的索引编号。
10.根据权利要求9所述的装置,其特征在于,
所述处理单元,具体用于在所述字典倒排树中查找目标分支,所述目标分支上的字符节点所包含的字符与所述关键词中相同字符的个数占所述关键词的总字符数的比值大于阈值。
11.根据权利要求9所述的装置,其特征在于,所述字典倒排树包括线性倒排表,所述线性倒排表中包括至少一个索引编号和与每个所述索引编号对应的文档编号;
所述处理单元,还用于根据所述索引编号,在所述线性倒排表中查找所述关键词的文档编号。
12.根据权利要求9-11任一项所述的装置,其特征在于,
所述处理单元,还用于判断所述字典倒排树中一条分支上的字符与所述关键词的字符不相同的个数是否在预设值之内;如果在所述预设值之内,则根据所述分支上的字符节点的字符对所述不相同的字符进行纠错。
13.根据权利要求12所述的装置,其特征在于,
所述处理单元,具体用于确定与所述关键词不相同的字符,根据拼音或字形规则在所述字典倒排树的一条分支中查找与所述不相同字符相近似的字符,利用所述相近似的字符替换所述不相同的字符。
14.根据权利要求11所述的装置,其特征在于,
所述处理单元,还用于如果所述关键词对应的文档编号的个数为两个或两个以上时,则所述确定的至少两个文档编号按照所述线性倒排表中文档编号的顺序排序。
15.根据权利要求11所述的装置,其特征在于,
所述处理单元,还用于将每个关键词分别在所述字典倒排树中进行遍历,并输出每个所述关键词所对应的文档编号,其中,每个关键词所对应的文档编号组一个文档编号集合;统计所有关键词所对应的所有文档编号集合,筛选所有集合中的交集作为目标集合;输出所述目标集合中的文档编号,作为所述多个关键词所对应的文档编号。
16.根据权利要求9-15任一项所述的装置,其特征在于,
所述字典倒排树还包括至少一个公共字符节点,一个所述公共字符节点连接有至少两个字符节点,形成至少两条分支,所述至少两条分支包含所述一个公共字符节点。
17.一种搜索引擎,其特征在于,包括:至少一个接口、索引层和原始数据层,
所述原始数据层中存储有应用数据,所述应用数据中包括关键词;
所述索引层中包括字典倒排树,所述字典倒排树用于根据所述原始数据层中的关键词确定所述关键词对应的文档编号,所述字典倒排树包括:字典树和至少一个索引节点,所述字典树包括一个根节点,以及与所述根节点相连接的至少一条分支,其中,每条所述分支包含至少一个字符节点,一个所述字符节点包含一个字符,所述索引节点设置在所述分支上,每条所述分支上设置一个所述索引节点,所述索引节点上包含索引编号,所述索引编号用于指示该索引编号所在分支对应的文档编号;根据所述关键词,在所述字典倒排树中查找目标分支,所述目标分支上的字符节点与所述关键词中的字符相匹配;根据所述目标分支对应的索引节点,获取所述目标分支对应的索引编号;
所述至少一个接口用于输出所述文档编号。
18.根据权利要求17所述的搜索引擎,其特征在于,还包括算法层,
所述算法层用于对所述字典倒排树输出的文档编号进行排序、构建或更新,以及对所述原始数据层中的关键词进行搜索、纠错、拓展或更新。
19.根据权利要求18所述的搜索引擎,其特征在于,所述算法库中包括:索引构建单元、查询优化单元和搜索排序单元,
所述索引构建单元,用于对索引编号进行添加、删除或更新;
所述查询优化单元,用于对所述关键词进行查询拓展或纠错;
所述搜索排序单元,用于执行对所述关键词进行搜索和对输出的文档编号进行排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006416.4A CN110019647B (zh) | 2017-10-25 | 2017-10-25 | 一种关键词搜索方法、装置和搜索引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711006416.4A CN110019647B (zh) | 2017-10-25 | 2017-10-25 | 一种关键词搜索方法、装置和搜索引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110019647A CN110019647A (zh) | 2019-07-16 |
CN110019647B true CN110019647B (zh) | 2023-12-15 |
Family
ID=67186686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711006416.4A Active CN110019647B (zh) | 2017-10-25 | 2017-10-25 | 一种关键词搜索方法、装置和搜索引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019647B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110475028A (zh) * | 2019-08-26 | 2019-11-19 | 广州讯鸿网络技术有限公司 | 一种千万级联系人的t9搜索方法、电子设备及存储介质 |
CN110866085A (zh) * | 2019-11-04 | 2020-03-06 | 北京百分点信息科技有限公司 | 数据反馈方法与装置 |
WO2021207936A1 (zh) * | 2020-04-14 | 2021-10-21 | 深圳市欢太科技有限公司 | 文本匹配方法、装置、电子设备及存储介质 |
CN111737981A (zh) * | 2020-06-24 | 2020-10-02 | 平安科技(深圳)有限公司 | 词汇纠错方法、装置、计算机设备及存储介质 |
CN112069366B (zh) * | 2020-08-28 | 2024-02-09 | 喜大(上海)网络科技有限公司 | 召回确定方法、装置、设备及存储介质 |
CN112735469A (zh) * | 2020-10-28 | 2021-04-30 | 西安电子科技大学 | 低内存语音关键词检测方法、系统、介质、设备及终端 |
CN112579649A (zh) * | 2020-12-24 | 2021-03-30 | 成都中科大旗软件股份有限公司 | 一种基于索引技术实现k-v逆转检索方法 |
CN112667775A (zh) * | 2020-12-25 | 2021-04-16 | 平安科技(深圳)有限公司 | 基于关键词提示的检索方法、装置、电子设备及存储介质 |
CN112686717B (zh) * | 2021-03-11 | 2021-07-02 | 腾讯科技(深圳)有限公司 | 一种广告召回的数据处理方法及系统 |
CN113157722B (zh) * | 2021-04-01 | 2023-12-26 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、服务器、系统及存储介质 |
CN113553491A (zh) * | 2021-06-25 | 2021-10-26 | 西安电子科技大学 | 一种基于倒排索引的工业大数据搜索优化方法 |
CN113312523B (zh) * | 2021-07-30 | 2021-12-14 | 北京达佳互联信息技术有限公司 | 字典生成、搜索关键字推荐方法、装置和服务器 |
CN115080684B (zh) * | 2022-07-28 | 2023-01-06 | 天津联想协同科技有限公司 | 网盘文档索引方法、装置、网盘及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916905A (zh) * | 2006-09-04 | 2007-02-21 | 北京航空航天大学 | 基于倒排表进行检索提示的方法 |
CN102063446A (zh) * | 2009-11-13 | 2011-05-18 | 中国移动通信集团四川有限公司 | 一种建立倒排索引的方法及倒排索引装置 |
CN105824956A (zh) * | 2016-03-30 | 2016-08-03 | 南京邮电大学 | 一种基于链表结构的倒排索引模型及其构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286345B2 (en) * | 2009-06-12 | 2016-03-15 | International Business Machines Corporation | Query tree navigation |
-
2017
- 2017-10-25 CN CN201711006416.4A patent/CN110019647B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916905A (zh) * | 2006-09-04 | 2007-02-21 | 北京航空航天大学 | 基于倒排表进行检索提示的方法 |
CN102063446A (zh) * | 2009-11-13 | 2011-05-18 | 中国移动通信集团四川有限公司 | 一种建立倒排索引的方法及倒排索引装置 |
CN105824956A (zh) * | 2016-03-30 | 2016-08-03 | 南京邮电大学 | 一种基于链表结构的倒排索引模型及其构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110019647A (zh) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019647B (zh) | 一种关键词搜索方法、装置和搜索引擎 | |
CN109670163B (zh) | 信息识别方法、信息推荐方法、模板构建方法及计算设备 | |
US11151179B2 (en) | Method, apparatus and electronic device for determining knowledge sample data set | |
WO2021174783A1 (zh) | 近义词推送方法、装置、电子设备及介质 | |
CN106033416A (zh) | 一种字符串处理方法及装置 | |
CN102750375A (zh) | 一种基于随机游走的服务和标签推荐方法 | |
CN111339277A (zh) | 基于机器学习的问答交互方法及装置 | |
RU2605041C2 (ru) | Способы и системы для отображения тем микроблогов | |
CN110705226A (zh) | 电子表格的创建方法、装置及计算机设备 | |
CN104281275B (zh) | 一种英文的输入方法和装置 | |
CN105096944A (zh) | 语音识别方法及装置 | |
US20120109994A1 (en) | Robust auto-correction for data retrieval | |
KR20170141246A (ko) | 대상 검색 방법, 장치 및 서버 | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
CN105138649A (zh) | 数据的搜索方法、装置及终端 | |
CN107329964A (zh) | 一种文本处理方法及装置 | |
CN111930891B (zh) | 基于知识图谱的检索文本扩展方法及相关装置 | |
CN113254665A (zh) | 一种知识图谱扩充方法、装置、电子设备及存储介质 | |
US10824811B2 (en) | Machine learning data extraction algorithms | |
CN111552527A (zh) | 用户界面内文字翻译方法、装置、系统及存储介质 | |
CN108549679B (zh) | 用于url分析系统的文件扩展名快速匹配方法和装置 | |
CN105426490A (zh) | 一种基于树形结构的索引方法 | |
CN113065354B (zh) | 语料中地理位置的识别方法及其相关设备 | |
CN111460825A (zh) | 一种数据增强方法、装置、设备及存储介质 | |
US20190163810A1 (en) | Search User Interface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |