CN103514287A - 一种构建索引树的方法、汉语词汇搜索的方法及相关装置 - Google Patents
一种构建索引树的方法、汉语词汇搜索的方法及相关装置 Download PDFInfo
- Publication number
- CN103514287A CN103514287A CN201310459945.5A CN201310459945A CN103514287A CN 103514287 A CN103514287 A CN 103514287A CN 201310459945 A CN201310459945 A CN 201310459945A CN 103514287 A CN103514287 A CN 103514287A
- Authority
- CN
- China
- Prior art keywords
- node
- etymon
- sequence
- root
- index tree
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000013507 mapping Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 15
- 125000004122 cyclic group Chemical group 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 12
- 238000010276 construction Methods 0.000 description 8
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 6
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- 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
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)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种构建索引树的方法及装置,包括:建立关键词及其对应的索引信息,所述关键词包含至少一个汉字;将关键键词拆分成第一字根序列;根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;若不存在,则获取第一字根序列在索引树中的最后匹配节点,在最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将关键词与其对应的索引信息存储到子索引树的最后一个节点中。本发明还提供一种汉语词汇搜索的方法及装置,通过将汉语词汇拆分成五笔字根来构建垂直索引树,具有构建简单、搜索快速、哈希冲突小的优点。
Description
技术领域
本发明涉及搜索领域,尤其涉及一种构建索引树的方法、汉语词汇搜索的方法及相关装置。
背景技术
搜索引擎是根据一定的策略,运用特定的计算机程序从互联网上搜集信息,对信息进行组织和处理后,为用户提供检索服务,将检索到的相关信息展示给用户。现有的搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎等。
随着互联网的发展,信息在***式增长,搜索技术越来越为网民重视,以谷歌、雅虎、百度为首的全文搜索已为大家熟知。然而全文搜索引擎,由于采用的是纯关键词匹配方式,信息的查全率和查准率还是相当地低,用户输入一个关键词,一般都会返回大量匹配结果,而很多结果根本不是用户想要的,准确性较差。
垂直搜索引擎是针对某一个行业的专业搜索引擎,是搜索引擎的细分和延伸,通过对网页库中的某类专门的信息进行一次整合,定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。相对全文搜索引擎的信息量大、查询不准确、深度不够等问题,垂直搜索引擎可对某一特定领域、某一特定人群或某一特定需求提供“专、精、深”的信息和服务。相比较全文搜索引擎的海量信息无序化,垂直搜索引擎显得更加专注、具体和深入。
现有技术中,对于表音文字,如英语,可采用Trie树来建立单词索引。而汉语是一种意音文字或称语素-音节文字、语词-音节文字,是一种图形符号既代表语素,又代表音节的文字***,如果按照拼音进行排序搜索,其重复率太高。如果采用Hash表,由于汉语词汇不断增多,哈希冲突问题难以解决。
发明内容
有鉴于此,本发明的目的在于提供一种构建索引树的方法、汉语词汇搜索的方法及相关装置,通过将汉语词汇拆分成五笔字根来构建垂直索引树,具有构建简单、搜索快速、哈希冲突小的优点。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明的目的在于提供一种构建索引树的方法,包括:
建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
将所述关键词按照五笔字根拆分成第一字根序列;
根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
若不存在,则获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
本发明的目的在于提供一种构建索引树的装置,包括:
关键词建立模块,用于建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
第一拆分模块,用于将所述关键词按照五笔字根拆分成第一字根序列;
第一查找判断模块,用于根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
第一索引创建模块,用于当所述第一查找判断模块判断为否时,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
本发明的目的在于提供一种汉语词汇搜索的方法,包括:
获取关键词,所述关键词包含至少一个汉字;
将关键词按照五笔字根拆分成第三字根序列;
根据第三字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
若存在,则获取第三字根序列在索引树中的最后匹配节点,并获取所述最后匹配节点内存储的所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
本发明的目的在于提供一种汉语词汇搜索的装置,包括:
关键词获取模块,用于获取关键词,所述关键词包含至少一个汉字;
第二拆分模块,用于将关键词按照五笔字根拆分成第三字根序列;
第二查找判断模块,用于根据所述第三字根序列在索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
信息获取模块,用于当所述第二查找判断模块判断为是时,获取所述第三字根序列在所述索引树中的最后一个匹配节点,并获取所述节点内所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
由上述的技术方案可见,本发明在构建索引树时,将包含汉字的关键词拆分成五笔字根序列,按照五笔字根的分类建立对应的索引树。在搜索时,将待搜索的关键词拆分成五笔字根序列,从索引树根节点开始搜索。本发明针对汉语词汇提供一种全新的构建索引树的方法及其搜索方法,具有构建简单、搜索快速、哈希冲突小的优点。
附图说明
图1为本发明提供的一种构建索引树的方法的实施例一的流程图;
图2为本发明实施例提供一种五叉索引树的第一示意图;
图3为本发明实施例提供一种五叉索引树的第二示意图;
图4为本发明提供的一种构建索引树的方法的实施例二的流程图;
图5为本发明实施例提供的一种判断索引树中是否存在关键词字根序列对应的路径的方法流程示意图;
图6为本发明实施例提供的一种根据字根序列构建索引树的方法流程示意图;
图7为本发明提供的一种构建索引树的装置的实施例一的结构图;
图8为本发明提供的一种构建索引树的装置的实施例二的结构图;
图9为本发明实施例提供的第一查找判断模块的结构图;
图10为本发明实施例提供的第一索引创建模块的结构图;
图11为本发明实施例提供的一种汉语词汇搜索的方法的流程图;
图12为本发明实施例提供一种判断索引树中是否存在字根序列对应的路径的方法流程图;
图13为本发明实施例提供的一种汉语词汇搜索的装置的结构图;
图14为本发明实施例提供的第二查找判断模块的结构图。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
如图1所示,本发明提供的一种构建索引树的方法的实施例一的流程图,包括:
步骤S101,建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字。
具体的,在构建某个专业领域的垂直搜索引擎时,需要从网络中采集元数据,并对元数据进行分析,获取元数据中的原始关键词。为了实现模糊搜索,可对原始关键词进行扩展和拆分,生成一个关键词集合,在该关键词集合中的每个关键词都是原始关键词的近似词,每个关键词的索引信息都与原始关键词的索引信息相同。最后,针对关键词集合中的每个关键词分别建立索引树。
如采集视频领域的元数据,该元数据包括视频名称、类型、主演、导演等数据。通过元数据进行解析,可以将一个视频的具体信息分析出来,如将电影名称为《ABCD》作为原始关键词,对其进行扩展,则可能扩展成《AB》、《CD》、《ABCD》、《ABC》等其中一个或多个。
索引信息可以是关键词对应的URL地址、标识、名称或序列号的哈希值。
步骤S102,将所述关键词按照五笔字根拆分成第一字根序列。
五笔字根是五笔字型输入法的基本单元,现有的五笔字根版本有86版和98版本。字根序列是由关键词拆分而成的多个字根的组合,例如,关键词为“明天”,其可拆分成“日、月、一、大”的字根序列。
步骤S103,根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发的且经过的节点所组成的字根序列与第一字根序列相匹配的路径,若不存在,进入步骤S104。
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。现有的五笔字根至少可以分成起笔为横竖撇捺(或点)折的五种不同的类型,优选地,N为5的整数倍。
一种可选的实施例是,该索引树为五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折的字根。
另一种可选的实施例是,该索引树为二十五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折对应的25个区的字根。25区的分类参见86版或98版五笔字根表。
需要说明的是,本发明不限于上述两种构造索引树的方式,本领域技术人员可以根据该原理将五笔字根按照其他的方式进行分类,再根据分类的结果建立对应的索引树即可。
具体的,索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
以五叉索引树为例,根节点的数据结构为<K0,null,<Kj,Pj>>,非根节点的数据结构为<Ki,Map<R(i,m),Map<W(m,n),索引>>,<Kj,Pj>>。其中,
Ki:节点的五笔序号,值对应“横竖撇捺折”,0<i<6;
R(i,m):字根序号,以Ki对应的五笔起笔的第m个五笔字根,m>0;
W(m,n):第m个五笔字根在当前节点组成的第n个关键词,n>0;
Map<W(m,n),索引>:关键词W(m,n)对应的索引表,通过该索引表可以获取到关键词对应的URL地址、标识、名称或序列号;
Map<R(i,m),Map<W(m,n),索引>>:字根R(i,m)与当前节点组成的关键词对应的索引表的映射表;
Kj:Ki节点的第j个子节点的序号,0<j<6;
Pj:Ki节点的第j个子节点的指针;
i,j,m,n均为正整数,null,表示为空指针。
由于每个节点内包含一字根集,在判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径时,如果路径经过的每个节点的字根集里包含了与第一字根序列一一对应的字根,则判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径。如图2所示,本发明实施例提供一种五叉索引树的第一示意图,在该索引树中查找关键词“明天”的字根序列“日、月、一、大”对应的路径,从根节点root开始查找,在root的子节点n2中的字根表中包含“日”的字根,继续在n2节点的子节点查找包含“月”的字跟的节点,找到n6节点,依次类推,最后,在索引树中找到一条从根节点触发的路径,root-n2-n6-n8-n9,该路径经过的节点组成的字根序列与第一字根序列匹配。
步骤S104,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中。
在图3中查找关键词“明天”的字根序列“日、月、一、大”对应的路径时,未找到与字根序列匹配的路径,获取其在该索引树中的最后匹配节点n6,在n6节点下为尚未匹配成功的字根序列“一、大”创建子索引树,建好的索引树如图2所示。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图4所示,本发明提供的一种构建索引树的方法的实施例二的流程图,包括:
步骤S101,建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
步骤S102,将所述关键词按照五笔字根拆分成第一字根序列;
步骤S103,根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发的且经过的节点所组成的字根序列与第一字根序列相匹配的路径;若不存在,进入步骤S104,若存在,进入步骤S105;
步骤S104,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中。
其中,步骤S101至步骤S104同图1中实施例一,在此不再赘述。
步骤S105,获取第一字根序列在索引树中的最后匹配节点。
参见图2,关键词“明天”在索引树中的最后匹配节点为n9。
步骤S106,判断所述最后匹配节点中是否存储有所述关键词与所述关键词对应的索引信息,若不存在,进入步骤S107。
关键词在索引树中最后匹配的节点中可能包括多个词语,例如:信息、令牌、住处、停牌等。先判断该最后匹配节点是否存储有该关键词,然后再判断是否存储有该关键词对应的索引信息。同样的关键词可对应不同的索引信息。
步骤S107,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图5所示,本发明实施例提供的一种判断索引树中是否存在关键词字根序列对应的路径的方法流程示意图,包括:
步骤S1031,将索引树的根节点设为查找节点;
步骤S1032,从第一字根序列中取出第一个字根作为查找字根;
如,关键词“明天”的第一字根序列为“日、月、一、大”,将“日”取出来作为查找字根。
步骤S1033,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;若是,则进入步骤S1034,若否,则进入步骤S1038;
具体的,先判断查找字根对应的五笔序号,如“日”对应的五笔序号为竖,则判断查找节点中子节点链表中是否包含“竖”的子节点,如包含,则进一步判断该子节点的字根表中是否包含字根“日”。
优选地,预设索引树的最大层数为M,则步骤S1033进一步包括:
判断所述查找节点所在层数是否等于M;
若是,则将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;若否,则判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根。
为了降低字根序列较长的关键词的搜索复杂度,一种优选的方式是,建立字根序列的前序部分的索引树作为全部关键词的索引树。如,关键词为“ABCDEFGH”,可以只对“ABCDE”建立索引树,并在最后一个节点内保存关键词“ABCDEFGH”及其对应的索引信息。
步骤S1034,将所述第一子节点设为查找节点;
将查找字根在索引树中找到的节点设为新的查找节点。
步骤S1035,判断第一字根序列是否为空,若不为空,进入步骤S1036,若为空,进入步骤S1037;
步骤S1036,从第一字根序列中取出下一个字根作为查找字根,返回步骤S1033;
如,当字根“日”在索引树中找到后,获取下一个字根“月”作为查找字根。
步骤S1037,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
当第一字根序列中所有字根都在索引树中找到后,将最后查找到的节点设为最后匹配节点。
步骤S1038,将所述查找节点设为最后匹配节点,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图6所示,本发明实施例提供的一种根据字根序列构建索引树的方法流程示意图,包括:
步骤S1041,获取第一字根序列在索引树中的最后匹配节点;
参见图3,关键词“明天”在索引树中查找到的最后匹配节点为n6。
步骤S1042,将尚未匹配成功的字根序列设为第二字根序列;
参见图3,尚未匹配成功的字根序列为“一、大”。
步骤S1043,从第二字根序列中取出第一个字根作为新增字根;
参见图3,从第二字根序列“一、大”中取出第一个字根“一”作为新增字根。
步骤S1044,判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号;若是,则进入步骤S1045,若否,则进入步骤S1046;
新增字根“一”的五笔序号为“横”,判断最后匹配节点的子节点链表中是否存在“横”的第二子节点。
优选地,预设索引树的最大层数为M,则步骤S1044进一步包括:
判断所述最后匹配节点所在层数是否等于M;
若是,则将所述关键词与所述关键词对应的索引信息存储到最后匹配节点中;若否,则判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号。
步骤S1045,将所述新增字根添加到所述第二子节点的字根表中,将所述第二子节点设为最后匹配节点;
如果存在“横”的第二子节点,直接将“一”添加到该子节点的字根表中。
步骤S1046,在所述最后匹配节点下创建第三子节点,所述第三子节点的五笔序号为所述新增字根对应的五笔序号,并将所述新增字根添加到所述第三子节点的字根表中,将所述第三子节点设为最后匹配节点;
如果不存在“横”的第二子节点,在最后匹配节点下创建一个新节点,将新节点的五笔序号设为“横”,并将“一”添加到该子节点的字根表中。
步骤S1047,判断第二字根序列是否为空;若不为空,则进入步骤S1048,若为空,则进入步骤S1049;
步骤S1048,从第二字根序列中取出下一个字根作为新增字根,返回步骤S1044;
步骤S1049,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图7所示,本发明提供的一种构建索引树的装置的实施例一的结构图,包括:
关键词建立模块11,用于建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
具体的,在构建某个专业领域的垂直搜索引擎时,需要从网络中采集元数据,并对元数据进行分析,获取元数据中的原始关键词。为了实现模糊搜索,可对原始关键词进行扩展和拆分,生成一个关键词集合,在该关键词集合中的每个关键词都是原始关键词的近似词,每个关键词的索引信息都与原始关键词的索引信息相同。最后,针对关键词集合中的每个关键词分别建立索引树。
如采集视频领域的元数据,该元数据包括视频名称、类型、主演、导演等数据。通过元数据进行解析,可以将一个视频的具体信息分析出来,如将电影名称为《ABCD》作为原始关键词,对其进行扩展,则可能扩展成《AB》、《CD》、《ABCD》、《ABC》等其中一个或多个。
索引信息可以是关键词对应的URL地址、标识、名称或序列号的哈希值。
第一拆分模块12,用于将所述关键词按照五笔字根拆分成第一字根序列;
五笔字根是五笔字型输入法的基本单元,现有的五笔字根版本有86版和98版本。例如,关键词为“明天”,其可拆分成“日、月、一、大”的字根序列。
第一查找判断模块13,用于根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。由于现有的五笔字根至少可以分成起笔为横竖撇捺(或点)折的五种不同的类型,优选地,N为5的整数倍。
一种可选的实施例是,该索引树为五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折的字根。
另一种可选的实施例是,该索引树为二十五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折对应的25个区的字根。25区的分类参见86版或98版五笔字根表。
需要说明的是,本发明不限于上述两种构造索引树的方式,本领域技术人员可以根据该原理将五笔字根按照其他的方式进行分类,再根据分类的结果建立对应的索引树即可。
具体的,索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
第一索引创建模块14,用于当第一查找判断模块13判断为否时,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中。
在图3中查找关键词“明天”的字根序列“日、月、一、大”对应的路径时,未找到与字根序列匹配的路径,获取其在该索引树中的最后匹配节点n6,在n6节点下为尚未匹配成功的字根序列“一、大”创建子索引树,建好的索引树如图2所示。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图8所示,本发明提供的一种构建索引树的装置的实施例二的结构图,包括:
关键词建立模块11,用于建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
第一拆分模块12,用于将所述关键词按照五笔字根拆分成第一字根序列;
第一查找判断模块13,用于根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
第一索引创建模块14,用于当第一查找判断模块13判断为否时,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中;
当第一查找判断模块13判断为是时,该装置还包括第二索引创建模块15,第二索引创建模块15包括:
第二节点获取单元151,用于获取第一字根序列在索引树中的最后匹配节点;
参见图2,关键词“明天”在索引树中的最后匹配节点为五笔序号为“横”,字根表包含“大”的节点。
索引判断单元152,用于判断所述最后匹配节点中是否存储有所述关键词与所述关键词对应的索引信息;
关键词在索引树中最后匹配的节点中可能包括多个词语,例如:信息、令牌、住处、停牌等等。先判断该最后匹配节点是否存储有该关键词,然后再判断是否存储有该关键词对应的索引信息。同样的关键词可对应不同的索引信息。
第二索引存储单元153,用于当索引判断单元152判断为否时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
关键词建立模块11,第一拆分模块12,第一查找判断模块13,第一索引创建模块14同图7中实施例一,在此不再赘述。
参见图9,本发明实施例提供的第一查找判断模块的结构图,包括:
第一查找设置单元131,用于将索引树的根节点设为查找节点;
第一查找获取单元132,用于从第一字根序列中取出第一个字根作为查找字根;
第一查找判断单元133,用于判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
第一查找处理单元134,用于当第一查找判断单元133判断为是时,将所述第一子节点设为查找节点,判断第一字根序列是否为空,若不为空,从第一字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
第二查找处理单元135,用于当第一查找判断单元133判断为否时,将所述查找节点设为最后匹配节点,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径。
参见图10,本发明实施例提供的第一索引创建模块的结构图,包括:
第一节点获取单元141,用于获取第一字根序列在索引树中的最后匹配节点;
创建设置单元142,用于将尚未匹配成功的字根序列设为第二字根序列;
字根获取单元143,用于从第二字根序列中取出第一个字根作为新增字根;
字根判断单元144,用于判断所述最后匹配节点的子节点链表中是否第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号;
第一字根添加单元145,用于当字根判断单元144判断为是时,将所述新增字根添加到所述第二子节点的字根表中,将所述第二子节点设为最后匹配节点;
第二字根添加单元146,用于当字根判断单元144判断为否时,在所述最后匹配节点下创建第三子节点,所述第三子节点的五笔序号为所述新增字根对应的五笔序号,并将所述新增字根添加到所述第三子节点的字根表中,将所述第三子节点设为最后匹配节点;
循环判断单元147,用于判断第二字根序列是否为空,若不为空,则从第二字根序列中取出下一个字根作为新增字根;
第一索引存储单元148,用于根据循环判断单元147判断为是时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
优选地,本发明实施例提供的装置还包括:
预设值模块,用于设置索引树的最大层数为M;
所述第一查找判断模块13还包括:
第一层数判断单元,用于判断所述查找节点所在层数是否等于M;
第三查找处理单元,用于当所述第一层数判断单元判断为是时,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
所述第一查找判断单元,还用于当所述第一层数判断单元判断为否时,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
所述第一索引创建模块14还包括:
第二层数判断单元,用于判断所述最后匹配节点所在层数是否等于M;
所述第一索引存储单元,还用于当所述第二层数判断单元判断为是时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中;
所述字根判断单元,用于当所述第二层数判断单元判断为否时,判断所述最后匹配节点的子节点链表中是否第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号。
本发明提供的实施例,通过将包含汉字的关键词按照五笔字根的方式拆分成字根序列,再按照该字根序列依次构建索引树的节点,使得构建后的索引树包含一条从根节点出发的路径,该路径上每个节点包含有与该字根序列一一对应的字根,最后,将该关键词和关键词对应的索引信息存储到最后一个节点中。采用本发明实施例,提供一种全新的汉字索引树的构建方法,具有构建简单、哈希冲突小的优点。
如图11所示,本发明实施例提供的一种汉语词汇搜索的方法的流程图,包括:
步骤S201,获取关键词,所述关键词包含至少一个汉字;
用户在搜索窗口输入要检索的关键词,进一步地,搜索***可对关键词进行拆分、模糊匹配等得到最终用来来搜索树中检索的关键词或关键词组合。
步骤S202,将所述关键词按照五笔字根拆分成第三字根序列;
步骤S203,根据第三字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径,若存在,进入步骤S204;
步骤S204,获取第三字根序列在索引树中的最后匹配节点,并获取所述最后匹配节点内存储的所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。由于现有的五笔字根至少可以分成起笔为横竖撇捺(或点)折的五种不同的类型,优选地,N为5的整数倍。
一种可选的实施例是,该索引树为五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折的字根。
另一种可选的实施例是,该索引树为二十五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折对应的25个区的字根。25区的分类参见86版或98版五笔字根表。
需要说明的是,本发明不限于上述两种构造索引树的方式,本领域技术人员可以根据该原理将五笔字根按照其他的方式进行分类,再根据分类的结果建立对应的索引树即可。
具体的,索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
参见图12,本发明实施例提供一种判断索引树中是否存在字根序列对应的路径的方法流程图,包括:
步骤S2031,将索引树的根节点设为查找节点;
步骤S2032,从第三字根序列中取出第一个字根作为查找字根;
步骤S2033,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根,若判断为是,进入步骤S20234,否则,进入步骤S2035;
步骤S2034,将所述第一子节点设为查找节点;
步骤S2036,判断第三字根序列是否为空,若不为空,进入步骤S2027,否则,进入步骤S2038;
步骤S2037,从第三字根序列中取出下一个字根作为查找字根,返回步骤S2023;
步骤S2038,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径。
步骤S2035,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径。
优选地,若所述索引树的最大层数为M,则步骤S2033进一步包括:
判断所述查找节点所在层数是否等于M;
若是,则将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
若否,则判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根。
本发明提供的实施例,只需将关键词按照五笔字根的方式拆分成字根序列,根据该字根序列在预先创建的索引树中查找,判断索引树中是否存在一条从根节点出发的路径,该路径上经过的字根可组成该字根序列,如果存在,则获取最后匹配节点内的索引信息。采用本发明实施例,提供一种全新的适应于汉字的垂直搜索的方法,这种搜索方法的搜索复杂度仅取决于关键词对应的字根序列的长度,与索引树本身的大小无关,具有搜索快、哈希冲突小的优点。
如图13所示,本发明实施例提供的一种汉语词汇搜索的装置的结构图,包括:
关键词获取模块21,用于获取关键词,所述关键词包含至少一个汉字;
用户在搜索窗口输入要检索的关键词,进一步地,搜索***可对关键词进行拆分、模糊匹配等得到最终用来来搜索树中检索的关键词或关键词组合。
第二拆分模块22,用于将关键词按照五笔字根拆分成第三字根序列;
第二查找判断模块23,用于根据所述第三字根序列在索引树中查找,判断所述索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
信息获取模块24,用于当第二查找判断模块23判断为是时,获取所述第三字根序列在所述索引树中的最后一个匹配节点,并获取所述节点内所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。由于现有的五笔字根至少可以分成起笔为横竖撇捺(或点)折的五种不同的类型,优选地,N为5的整数倍。
一种可选的实施例是,该索引树为五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折的字根。
另一种可选的实施例是,该索引树为二十五叉索引树,索引树中每个子节点分别包含起笔为横、竖、撇、捺(或点)、折对应的25个区的字根。25区的分类参见86版或98版五笔字根表。
需要说明的是,本发明不限于上述两种构造索引树的方式,本领域技术人员可以根据该原理将五笔字根按照其他的方式进行分类,再根据分类的结果建立对应的索引树即可。
具体的,索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
参见图14,第二查找判断模块23包括:
第二查找设置单231,用于将所述索引树的根节点设为查找节点;
第二查找获取单元232,用于从第三字根序列中取出第一个字根作为查找字根;
第二查找判断单元233,用于判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
第四查找处理单元234,用于当第二查找判断单元233判断为是时,将所述第一子节点设为查找节点,判断第一字根序列是否为空,若不为空,从第一字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
第五查找处理单元235,用于当第二查找判断单元233判断为否时,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径。
优选地,若所述索引树的最大层数为M,则第二查找判断模块23还包括:
第三层数判断单元,用于判断所述查找节点所在层数是否等于M;
第六查找处理单元,用于当所述第三层数判断单元判断为是时,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
所述第二查找判断单元,还用于当所述第三层数判断单元判断为否时,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根。
本发明提供的实施例,只需将关键词按照五笔字根的方式拆分成字根序列,根据该字根序列在预先创建的索引树中查找,判断索引树中是否存在一条从根节点出发的路径,该路径上经过的字根可组成该字根序列,如果存在,则获取最后匹配节点内的索引信息。采用本发明实施例,提供一种全新的适应于汉字的垂直搜索的方法,这种搜索方法的搜索复杂度仅取决于关键词对应的字根序列的长度,与索引树本身的大小无关,具有搜索快、哈希冲突小的优点。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (20)
1.一种构建索引树的方法,其特征在于,
建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
将所述关键词按照五笔字根拆分成第一字根序列;
根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
若不存在,则获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
2.如权利要求1所述的方法,其特征在于,当判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径,则所述方法还包括:
获取第一字根序列在索引树中的最后匹配节点;
判断所述最后匹配节点中是否存储有所述关键词与所述关键词对应的索引信息;
若否,则将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
3.如权利要求1或2所述的方法,其特征在于,所述索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
4.如权利要求3所述的方法,其特征在于,所述根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径包括:
将索引树的根节点设为查找节点;
从第一字根序列中取出第一个字根作为查找字根;
判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
若是,将所述第一子节点设为查找节点,判断第一字根序列是否为空,若不为空,从第一字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
若否,将所述查找节点设为最后匹配节点,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径。
5.如权利要求4所述的方法,其特征在于,所述获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到所述子索引树的最后一个节点中包括:
获取第一字根序列在索引树中的最后匹配节点;
将尚未匹配成功的字根序列设为第二字根序列;
从第二字根序列中取出第一个字根作为新增字根;
判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号;
若是,将所述新增字根添加到所述第二子节点的字根表中,将所述第二子节点设为最后匹配节点;
若否,在所述最后匹配节点下创建第三子节点,所述第三子节点的五笔序号为所述新增字根对应的五笔序号,并将所述新增字根添加到所述第三子节点的字根表中,将所述第三子节点设为最后匹配节点;
判断第二字根序列是否为空;
若不为空,则从第二字根序列中取出下一个字根作为新增字根,以此类推;
若为空,则将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
预设索引树的最大层数为M;
所述判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根的步骤进一步包括:
判断所述查找节点所在层数是否等于M;
若是,则将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
若否,则判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
所述判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号的步骤进一步包括:
判断所述最后匹配节点所在层数是否等于M;
若是,则将所述关键词与所述关键词对应的索引信息存储到最后匹配节点中;
若否,则判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号。
7.一种构建索引树的装置,其特征在于,包括:
关键词建立模块,用于建立关键词及所述关键词对应的索引信息,所述关键词包含至少一个汉字;
第一拆分模块,用于将所述关键词按照五笔字根拆分成第一字根序列;
第一查找判断模块,用于根据第一字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
第一索引创建模块,用于当所述第一查找判断模块判断为否时,获取第一字根序列在索引树中的最后匹配节点,在所述最后匹配节点下为尚未匹配成功的字根序列创建对应的子索引树,将所述关键词与所述关键词对应的索引信息存储到子索引树的最后一个节点中;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
8.如权利要求7所述的装置,其特征在于,当所述第一查找判断模块判断为是时,所述装置还包括第二索引创建模块,
所述第二索引创建模块包括:
第二节点获取单元,用于获取第一字根序列在索引树中的最后匹配节点;
索引判断单元,用于判断所述最后匹配节点中是否存储有所述关键词与所述关键词对应的索引信息;
第二索引存储单元,用于当所述索引判断单元判断为否时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
9.如权利要求7或8所述的装置,其特征在于,所述索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
10.如权利要求9所述的装置,其特征在于,所述第一查找判断模块包括:
第一查找设置单元,用于将索引树的根节点设为查找节点;
第一查找获取单元,用于从第一字根序列中取出第一个字根作为查找字根;
第一查找判断单元,用于判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
第一查找处理单元,用于当所述第一查找判断单元判断为是时,将所述第一子节点设为查找节点,判断第一字根序列是否为空,若不为空,从第一字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
第二查找处理单元,用于当所述第一查找判断单元判断为否时,将所述查找节点设为最后匹配节点,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径。
11.如权利要求9所述的装置,其特征在于,所述第一索引创建模块包括:
第一节点获取单元,用于获取第一字根序列在索引树中的最后匹配节点;
创建设置单元,用于将尚未匹配成功的字根序列设为第二字根序列;
字根获取单元,用于从第二字根序列中取出第一个字根作为新增字根;
字根判断单元,用于判断所述最后匹配节点的子节点链表中是否存在第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号;
第一字根添加单元,用于当所述字根判断单元判断为是时,将所述新增字根添加到所述第二子节点的字根表中,将所述第二子节点设为最后匹配节点;
第二字根添加单元,用于当所述字根判断单元判断为否时,在所述最后匹配节点下创建第三子节点,所述第三子节点的五笔序号为所述新增字根对应的五笔序号,并将所述新增字根添加到所述第三子节点的字根表中,将所述第三子节点设为最后匹配节点;
循环判断单元,用于判断第二字根序列是否为空,若不为空,则从第二字根序列中取出下一个字根作为新增字根;
第一索引存储单元,用于根据所述循环判断单元判断为是时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中。
12.如权利要求11所述的装置,其特征在于,所述装置还包括:
预设值模块,用于设置索引树的最大层数为M;
所述第一查找判断模块还包括:
第一层数判断单元,用于判断所述查找节点所在层数是否等于M;
第三查找处理单元,用于当所述第一层数判断单元判断为是时,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第一字根序列相匹配的路径;
所述第一查找判断单元,还用于当所述第一层数判断单元判断为否时,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
所述第一索引创建模块还包括:
第二层数判断单元,用于判断所述最后匹配节点所在层数是否等于M;
所述第一索引存储单元,还用于当所述第二层数判断单元判断为是时,将所述关键词与所述关键词对应的索引信息存储到所述最后匹配节点中;
所述字根判断单元,用于当所述第二层数判断单元判断为否时,判断所述最后匹配节点的子节点链表中是否第二子节点,所述第二子节点的五笔序号为所述新增字根对应五笔序号。
13.一种汉语词汇搜索的方法,其特征在于,所述方法包括:
获取关键词,所述关键词包含至少一个汉字;
将所述关键词按照五笔字根拆分成第三字根序列;
根据第三字根序列在预先创建的索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
若存在,则获取第三字根序列在索引树中的最后匹配节点,并获取所述最后匹配节点内存储的所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
14.如权利要求13所述的方法,其特征在于,所述索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
15.如权利要求14所述的方法,其特征在于,所述判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径的步骤包括:
将索引树的根节点设为查找节点;
从第三字根序列中取出第一个字根作为查找字根;
判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
若是,将所述第一子节点设为查找节点,判断第三字根序列是否为空,若不为空,从第三字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
若否,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径。
16.如权利要求15所述的方法,其特征在于,若所述索引树的最大层数为M,则
所述判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根的步骤进一步包括:
判断所述查找节点所在层数是否等于M;
若是,则将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
若否,则判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根。
17.一种汉语词汇搜索的装置,其特征在于,所述装置包括:
关键词获取模块,用于获取关键词,所述关键词包含至少一个汉字;
第二拆分模块,用于将所述关键词按照五笔字根拆分成第三字根序列;
第二查找判断模块,用于根据所述第三字根序列在索引树中查找,判断索引树中是否存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
信息获取模块,用于当所述第二查找判断模块判断为是时,获取所述第三字根序列在所述索引树中的最后一个匹配节点,并获取所述节点内所述关键词对应的索引信息;
所述索引树为N叉树,除根节点外的每个节点包含一字根集,所述字根集内的字根具有相同的五笔序号。
18.如权利要求17所述的方法,其特征在于,所述索引树的节点包含五笔序号、字根表以及子节点链接表,其中,五笔序号为字根表中包含的字根对应的序号,字根表为字根序号和所述字根序号对应的字根在当前节点组成的关键词对应的索引表的映射表,子节点链接表为子节点的五笔序号和所述子节点的五笔序号对应的子节点链接地址的映射表。
19.如权利要求18所述的装置,其特征在于,所述第二查找判断模块包括:
第二查找设置单元,用于将所述索引树的根节点设为查找节点;
第二查找获取单元,用于从第三字根序列中取出第一个字根作为查找字根;
第二查找判断单元,用于判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根;
第四查找处理单元,用于当所述第二查找判断单元判断为是时,将所述第一子节点设为查找节点,判断第一字根序列是否为空,若不为空,从第一字根序列中取出下一个字根作为查找字根,以此类推;若为空,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
第五查找处理单元,用于当所述第二查找判断单元判断为否时,判断索引树中不存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径。
20.如权利要求19所述的装置,其特征在于,若所述索引树的最大层数为M,则
所述第二查找判断模块还包括:
第三层数判断单元,用于判断所述查找节点所在层数是否等于M;
第六查找处理单元,用于当所述第三层数判断单元判断为是时,将所述查找节点设为最后匹配节点,判断索引树中存在从根节点出发且经过的节点所组成的字根序列与第三字根序列相匹配的路径;
所述第二查找判断单元,还用于当所述第三层数判断单元判断为否时,判断所述查找节点的子节点链表中是否存在第一子节点,所述第一子节点的字根表中包含所述查找字根。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310459945.5A CN103514287A (zh) | 2013-09-29 | 2013-09-29 | 一种构建索引树的方法、汉语词汇搜索的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310459945.5A CN103514287A (zh) | 2013-09-29 | 2013-09-29 | 一种构建索引树的方法、汉语词汇搜索的方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103514287A true CN103514287A (zh) | 2014-01-15 |
Family
ID=49897011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310459945.5A Pending CN103514287A (zh) | 2013-09-29 | 2013-09-29 | 一种构建索引树的方法、汉语词汇搜索的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103514287A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199541A (zh) * | 2014-08-08 | 2014-12-10 | 乐视网信息技术(北京)股份有限公司 | 基于笔画输入进行搜索的方法及装置 |
CN106021397A (zh) * | 2016-05-12 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种关键词查找的树结构及实现方法 |
CN108228657A (zh) * | 2016-12-22 | 2018-06-29 | 沈阳美行科技有限公司 | 一种关键字检索的实现方法及装置 |
CN108304384A (zh) * | 2018-01-29 | 2018-07-20 | 上海名轩软件科技有限公司 | 拆词方法及设备 |
CN110956271A (zh) * | 2019-10-21 | 2020-04-03 | 北京明朝万达科技股份有限公司 | 一种海量数据的多级分类方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120693A (zh) * | 1994-10-12 | 1996-04-17 | 胡宣华 | 数形、数音汉字键盘输入技术 |
US20080133574A1 (en) * | 2006-11-27 | 2008-06-05 | Taiga Fukushima | Method, program and device for retrieving symbol strings, and method, program and device for generating trie thereof |
-
2013
- 2013-09-29 CN CN201310459945.5A patent/CN103514287A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120693A (zh) * | 1994-10-12 | 1996-04-17 | 胡宣华 | 数形、数音汉字键盘输入技术 |
US20080133574A1 (en) * | 2006-11-27 | 2008-06-05 | Taiga Fukushima | Method, program and device for retrieving symbol strings, and method, program and device for generating trie thereof |
Non-Patent Citations (1)
Title |
---|
廖敏等: "双数组Trie树索引的可操作性研究", 《计算机***应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104199541A (zh) * | 2014-08-08 | 2014-12-10 | 乐视网信息技术(北京)股份有限公司 | 基于笔画输入进行搜索的方法及装置 |
CN106021397A (zh) * | 2016-05-12 | 2016-10-12 | 武汉斗鱼网络科技有限公司 | 一种关键词查找的树结构及实现方法 |
CN108228657A (zh) * | 2016-12-22 | 2018-06-29 | 沈阳美行科技有限公司 | 一种关键字检索的实现方法及装置 |
CN108228657B (zh) * | 2016-12-22 | 2022-05-27 | 沈阳美行科技股份有限公司 | 一种关键字检索的实现方法及装置 |
CN108304384A (zh) * | 2018-01-29 | 2018-07-20 | 上海名轩软件科技有限公司 | 拆词方法及设备 |
CN108304384B (zh) * | 2018-01-29 | 2021-08-27 | 上海名轩软件科技有限公司 | 拆词方法及设备 |
CN110956271A (zh) * | 2019-10-21 | 2020-04-03 | 北京明朝万达科技股份有限公司 | 一种海量数据的多级分类方法及装置 |
CN110956271B (zh) * | 2019-10-21 | 2022-12-09 | 北京明朝万达科技股份有限公司 | 一种海量数据的多级分类方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104979B2 (en) | Entity recognition using probabilities for out-of-collection data | |
KR101389148B1 (ko) | 오리지널 유저 입력에 기초한 유저 입력의 제안 및 정제 | |
Gupta et al. | Biperpedia: An ontology for search applications | |
CN101655862A (zh) | 信息对象搜索的方法和装置 | |
CN103365992B (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN110020189A (zh) | 一种基于中文相似性计算的文章推荐方法 | |
CN104021198B (zh) | 基于本体语义索引的关系数据库信息检索方法及装置 | |
JP2016522524A (ja) | 同義表現の探知及び関連コンテンツを検索する方法及び装置 | |
WO2008151466A1 (en) | Dictionary word and phrase determination | |
CA2610088A1 (en) | Relationship networks | |
KR20100047221A (ko) | 사전 단어 및 어구 판정 | |
CN108255972A (zh) | 一种全文检索方法及*** | |
JP2014238865A (ja) | 曖昧感応自然言語処理システムにおける同一指示解決 | |
CN104850574A (zh) | 一种面向文本信息的敏感词过滤方法 | |
CN103514287A (zh) | 一种构建索引树的方法、汉语词汇搜索的方法及相关装置 | |
CN101751434A (zh) | 一种元搜索引擎的排名方法及元搜索引擎 | |
US10678820B2 (en) | System and method for computerized semantic indexing and searching | |
CN110866091A (zh) | 一种数据检索方法及装置 | |
WO2012159558A1 (zh) | 基于语意识别的自然语言处理方法、装置和*** | |
US20160335367A1 (en) | Entity disambiguation using multisource learning | |
KR101095866B1 (ko) | 웹 기반의 정보 저장 및 검색 방법, 이를 위한 정보 관리 시스템 | |
KR20110133909A (ko) | 모든 자연어 표현의 각각의 의미마다 별도의 용어를 동적으로 생성하는 방법 및 이를 기반으로 하는 사전 관리기,문서작성기, 용어 주석기, 검색 시스템 및 문서정보체계 구축장치 | |
Ajoudanian et al. | Deep web content mining | |
Pamulaparty et al. | A near-duplicate detection algorithm to facilitate document clustering | |
US10380195B1 (en) | Grouping documents by content similarity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20170922 |