基于动态索引表的全文检索方法及装置制造方法及图纸

技术编号:39897654 阅读:6 留言:0更新日期:2023-12-30 13:11
本发明专利技术涉及一种基于动态索引表的全文检索方法及装置,属于信息检索的技术领域,该发明专利技术的方法包括:设置两个关键字索引表一和二,它们均采用链表数组的存储结构,分别对应地存储检索关键字首次检索成功和失败时所记录的相关信息;在执行用户的检索操作时,直接读取前述两个关键字索引表中的数据以快速返回检索成功或失败的结果信息,在未能返回结果信息时则首次地在文档文本中检索关键字并将检索结果相应地写入索引表一或二;两个关键字索引表链表数组的编址和寻址,均参照检索关键字经哈希函数运算后所产生的码值,以实现两个关键字索引表中对应数组元素的直接读写

【技术实现步骤摘要】
基于动态索引表的全文检索方法及装置


[0001]本专利技术涉及一种关键字检索的方法及装置,尤其涉及一种基于动态索引表的全文检索方法及装置,属于信息检索的



技术介绍

[0002]信息检索是一种通过计算机技术和信息学方法,从大量信息中找到与用户需求相匹配的特定信息的过程

信息检索不仅仅是一种简单的搜索过程,还涉及许多复杂的算法,如分词

索引

排序

聚类等,这些算法可以帮助我们更准确

更高效地查找需求的信息,这也正是信息检索技术研究和开发的意义所在

全文检索所研究的内容通常是整个文档信息的表示

存储

组织和访问,即根据用户的查询要求,如何从整个文档中检索出相关的文本字串

全文检索的中心环节是文件内容的表达

信息查询的获得以及相关信息的匹配,并将输出信息进行相关性排列,以最终输出用户满意的检索结果

全文检索是信息处理中一个极为重要的
分支,全文检索的目的,除了返回文档文本中是否存在要检索的关键字之外,还要对文本中的每个字

词进行位置标引

从全文检索的基本算法来看,目前通常采用的是在文档全文中将检索关键字与从头到尾逐一扫描的字串进行对比的数据匹配方式

在图书馆藏

法律文库

专利文献/>、
国家标准等数据库应用
中文本信息海量的情况下,全文检索将消耗较多的算力资源,尤其是在用户数量较多,用户检索请求频繁

计算机检索任务繁重时,全文检索的效率性能将直接决定用户体验的好坏,检索操作结果的反馈速度始终是检索
中一个长期追求的性能目标

[0003]目前,针对同一文本文档,当同一用户或不同用户针对同一关键字多次反复进行检索操作时,每一次的检索结果无论是成功还是失败,计算机检索系统通常会重复执行同一关键字匹配的相同过程,即先后执行的两次检索过程各自独立,在后的检索过程无法充分利用在先检索成功或失败时已经获取的某些“捷径”信息,换言之,为提高检索效率,在后检索的一个完整匹配过程中某些环节也许是可以略去的

当文档文本中的字符数量规模庞大,尤其是当用户的检索请求比较频繁时,这会给计算机检索系统的运行带来更大的任务负担,对检索结果的漫长等待过程甚至会直接影响用户的心理感受,尤其是检索不成功时的漫长等待更会给用户带来不良的使用体验

其中,同一用户或不同用户针对同一文档中同一检索关键字多次反复提交检索申请时计算机重复执行同一匹配运算过程,是导致整体检索效率不尽人意的原因之一,同时这也正是全文检索效率优化的空间所在


技术实现思路

[0004]本专利技术所要解决的技术问题是,在大语料的文本环境中,尤其是在先后执行的检索过程中用户所输入的关键字趋于相同或集中的情况下,如何提高用户关键字的检索效率,即无论其最终的检索结论是成功还是失败,都如何尽可能快地返回本次检索的结果,其目的在于为用户提供一种较佳的检索操作体验

[0005]为了解决上述技术问题,本专利技术提供了一种基于动态索引表的全文检索方法及装
置,并采取如下技术方案:第一方面,本专利技术提供了一种基于动态索引表的全文检索方法,查找检索关键字在文档文本中的所有出现位置并向用户返回查找结果,所述方法包括:步骤
S1、
在计算机存储器中设置两个关键字索引表,即关键字索引表一和关键字索引表二,所述两个关键字索引表均采用链表数组的存储结构,分别记为
Index_1[]和
Index_2[],它们的下标编址范围均为0~
65535
,两个链表数组
Index_1[]和
Index_2[]中的每一个数组元素均对应存储一个线性链表的头指针,其中
Index_1[]中数组元素所指示线性链表内的各结点均包括用于存储检索关键字在所述文档文本中一处出现位置的指针
P
和用于存储当前结点之直接后继结点存储位置的指针
N
这两个域,
Index_2[]中数组元素所指示线性链表内的各结点均包括用于存储检索关键字的字串
S
和用于存储当前结点之直接后继结点存储位置的指针
N
这两个域,两个链表数组
Index_1[]和
Index_2[]中的每一个数组元素均初始化取值为
NULL
;步骤
S2、
在获取用户输入的检索关键字之后,首先判断该关键字先前是否在文档文本中曾经检索过,即利用哈希函数计算该关键字的码值
C
,通过读取数组元素
Index_1[C]所指示的一条线性链表中的各结点数据判断该关键字先前是否曾经检索过且检索结果为成功,通过读取数组元素
Index_2[C]所指示的一条线性链表中的各结点数据判断该关键字先前是否曾经检索过且检索结果为失败,若既未成功地检索过也未失败地检索过则视为该关键字先前在文档文本中从未检索过;然后,若该关键字先前曾成功地检索过则返回其首次检索成功时所保存的检索结论信息,若该关键字先前曾失败地检索过则返回其首次检索失败时所保存的检索结论信息,若该关键字先前从未检索过则在文档文本中进行该关键字的首次检索并保存相应的检索结论信息;所述哈希函数为
C

Hash(U1,U2,U3……
U
k
)
,式中
C
为大于等于0且小于
65536
的整数,
k
表示该检索关键字构成中的字符总数,
U1、U2、U3……
U
k
为该检索关键字依次构成中各字符表示的二进制
Unicode
编码中的低
16
位所对应的数值

[0006]优选地:所述若该关键字先前曾成功地检索过则返回其首次检索成功时所保存的检索结论信息,其判断及返回方法是,设置一个当前指针并初始化取值为
Index_1[C],即指向关键字索引表一内的一个线性链表的头结点,依次读取该线性链表中当前指针所指结点内
P
域指针在文档文本内指示字符位置起始且与检索关键字等长的一个字串,若所读取的一个字串与检索关键字匹配,则返回检索关键字在文档文本中出现的当前一处位置,即当前指针所指示结点内的
P
指针域数值,否则当前指针位置后移,直至读完链表中的最后一个结点,以返回检索关键字在文档文本中出现的所有位置;所述若该关键字先前曾失败地检索过则返回其首次检索失败时所保存的检索结论信息,其判断及返回方法是,设置一个当前指针并初始化取值为
Index_2[C],即指向关键字索本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种基于动态索引表的全文检索方法,查找检索关键字在文档文本中的所有出现位置并向用户返回查找结果,其特征在于,所述方法包括:步骤
S1、
在计算机存储器中设置两个关键字索引表,即关键字索引表一和关键字索引表二,所述两个关键字索引表均采用链表数组的存储结构,分别记为
Index_1[]

Index_2[]
,它们的下标编址范围均为0~
65535
,两个链表数组
Index_1[]

Index_2[]
中的每一个数组元素均对应存储一个线性链表的头指针,其中
Index_1[]
中数组元素所指示线性链表内的各结点均包括用于存储检索关键字在所述文档文本中一处出现位置的指针
P
和用于存储当前结点之直接后继结点存储位置的指针
N
这两个域,
Index_2[]
中数组元素所指示线性链表内的各结点均包括用于存储检索关键字的字串
S
和用于存储当前结点之直接后继结点存储位置的指针
N
这两个域,两个链表数组
Index_1[]

Index_2[]
中的每一个数组元素均初始化取值为
NULL
;步骤
S2、
在获取用户输入的检索关键字之后,首先判断该关键字先前是否在所述文档文本中曾经检索过,即利用哈希函数计算该关键字的码值
C
,通过读取数组元素
Index_1[C]
所指示的一条线性链表中的各结点数据判断该关键字先前是否曾经检索过且检索结果为成功,通过读取数组元素
Index_2[C]
所指示的一条线性链表中的各结点数据判断该关键字先前是否曾经检索过且检索结果为失败,若既未成功地检索过也未失败地检索过则视为该关键字先前在文档文本中从未检索过;然后,若该关键字先前曾成功地检索过则返回其首次检索成功时所保存的检索结论信息,若该关键字先前曾失败地检索过则返回其首次检索失败时所保存的检索结论信息,若该关键字先前从未检索过则在文档文本中进行该关键字的首次检索并保存相应的检索结论信息;所述哈希函数为
C

Hash(U1,U2,U3……
U
k
)
,式中
C
为大于等于0且小于
65536
的整数,
k
表示该检索关键字构成中的字符总数,
U1、U2、U3……
U
k
为该检索关键字依次构成中各字符表示的二进制
Unicode
编码中的低
16
位所对应的数值
。2.
根据权利要求1所述的全文检索方法,其特征在于:所述若该关键字先前曾成功地检索过则返回其首次检索成功时所保存的检索结论信息,其判断及返回方法是,设置一个当前指针并初始化取值为
Index_1[C]
,即指向关键字索引表一内的一个线性链表的头结点,依次读取该线性链表中当前指针所指结点内
P
域指针在文档文本内指示字符位置起始且与检索关键字等长的一个字串,若所读取的一个字串与检索关键字匹配,则返回检索关键字在文档文本中出现的当前一处位置,即当前指针所指示结点内的
P
指针域数值,否则当前指针位置后移,直至读完链表中的最后一个结点,以返回检索关键字在文档文本中出现的所有位置;所述若该关键字先前曾失败地检索过则返回其首次检索失败时所保存的检索结论信息,其判断及返回方法是,设置一个当前指针并初始化取值为
Index_2[C]
,即指向关键字索引表二内的一个线性链表的头结点,依次读取该线性链表中当前指针所指结点内
S
域所保存的一个字串,直至读完链表中的最后一个结点,若所读取的一个字串与检索关键字一旦匹配,则返回检索关键字在文档文本中不存在的检索失败信息;所述若该关键字先前从未检索过则在文档文本中进行该关键字的首次检索并保存相应的检索结论信息,其判断及操作方法是,设置一个当前指针并初始化取值为文档文本中的首字符位置,在文档文本内依次读取由当前指针所指示字符开始且与检索关键字等长的
一个字串,若所读取的一个字串与检索关键字匹配,则记录检索关键字在文档文本中出现的当前一处位置,即当前指针的数值,并在数组元素
Index_1[C]
所指示的一条线性链表内插入一个新结点,且该新结点内的
P
指针域赋值为当前指针的数值,否则当前指针位置后移一个字符并重新进行上述判断及操作过程,直至文档文本的尾部位置,以在关键字索引表一中保存检索关键字在文档文本中出现的所有位置,若直至文档文本的尾部位置所读取的每一字串与检索关键字均不匹配,则在数组元素
Index_2[C]
所指示的一条线性链表内插入一个新结点,且该新结点内的
S
字串域赋值为检索关键字
。3.
根据权利要求1所述的全文检索方法,其特征在于,所述哈希函数
C

Hash(U1,U2,U3……
U
k
)

U1+
U2+
U3+
……

U
k
,并且当计算所产生的和值大于或等于
2^16
时,则
C
调整取值为所述和值的二进制数值表示中低
16
位数所对应的数值
。4.
根据权利要求1所述的全文检索方法,其特征在于,所述哈希函数
C

Hash(U1,U2,U3……
U
k
)

|U1-
U2-
U3-
……

U
k
|
,或者
C

Hash(U1,U2,U3……

【专利技术属性】
技术研发人员:汉京宁
申请(专利权)人:江苏瑞宁信创科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1