CN103186621A - 一种目录生成方法和装置 - Google Patents

一种目录生成方法和装置 Download PDF

Info

Publication number
CN103186621A
CN103186621A CN2011104577029A CN201110457702A CN103186621A CN 103186621 A CN103186621 A CN 103186621A CN 2011104577029 A CN2011104577029 A CN 2011104577029A CN 201110457702 A CN201110457702 A CN 201110457702A CN 103186621 A CN103186621 A CN 103186621A
Authority
CN
China
Prior art keywords
byte
catalogue
stream
directory
text
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
Application number
CN2011104577029A
Other languages
English (en)
Other versions
CN103186621B (zh
Inventor
李春雨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Founder Holdings Development Co ltd
Founder Apabi Technology Ltd
Original Assignee
Peking University Founder Group Co Ltd
Beijing Founder Apabi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Peking University Founder Group Co Ltd, Beijing Founder Apabi Technology Co Ltd filed Critical Peking University Founder Group Co Ltd
Priority to CN201110457702.9A priority Critical patent/CN103186621B/zh
Priority to US13/731,732 priority patent/US9069775B2/en
Publication of CN103186621A publication Critical patent/CN103186621A/zh
Application granted granted Critical
Publication of CN103186621B publication Critical patent/CN103186621B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/258Heading extraction; Automatic titling; Numbering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种目录生成方法和装置,该方法包括:在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;根据搜索到的全部目录字节流生成所述文本文件的目录。本发明的目录生成方法和装置通过对文本文件的字节匹配的方式获取目录,不需要将字节转换成为字符再进行匹配,在移动设备计算能力和内存有限的情况下,减小了设备的计算能力,同时提高了目录的提取速度。

Description

一种目录生成方法和装置
技术领域
本发明涉及移动阅读领域,尤其涉及一种目录生成方法和装置。
背景技术
TXT文本因其存储空间小、设备兼容性好,在移动阅读领域很受欢迎,例如TXT小说。
目前大多数的TXT小说没有总目录,无法满足读者快速寻找内容、实现跳跃性阅读的需求;现有的TXT文件目录生成方法都是基于字符匹配的方式,即将TXT文件中所有字符与目标字符(如第X章、第X篇等)匹配的方式确定所有目录,需要将文件的所有字节流转换为字符串再进行匹配,而要根据目录实现快速定位,还需要记录目录所对应文字在文件中的偏移量。可见,目前现有的TXT文件目录提取方式耗时长且麻烦,不能满足读者快速阅读的要求,因此,研究一种能够在移动设备计算能力和内存有限的情况下,快速高效提取目录的方法很有必要和意义。
发明内容
本发明提供一种目录生成方法及装置,用以解决现有技术通过字符匹配来获取目录时存在的耗时长且麻烦的问题。
本发明方法包括:
一种目录生成方法,包括:
在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
根据搜索到的全部目录字节流生成所述文本文件的目录。
一种目录生成装置,用于根据文本文件生成目录,包括:
目录字节流搜索模块,用于在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
目录生成模块,用于根据搜索到的全部目录字节流生成所述文本文件的目录。
本发明的目录生成方法和装置通过对文本文件的字节匹配的方式获取目录,不需要将字节转换成为字符再进行匹配,在移动设备计算能力和内存有限的情况下,减小了设备的计算能力,同时提高了目录的提取速度。
附图说明
图1为本发明提供的一种目录生成方法的流程示意图;
图2为本发明提供的一种目录生成装置的结构示意图。
具体实施方式
下面结合附图和具体实施例,对本发明目录生成方法和装置的具体实施方式作进一步详细描述。
本发明提供一种目录生成方法,如图1所示,该方法包括:
步骤11,在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
步骤12,根据搜索到的全部目录字节流确定所述文本文件的目录。
本发明的目录生成方法通过对文本文件的字节匹配的方式获取目录,该方法不需要将字节转换成为字符再进行匹配,在移动设备计算能力和内存有限的情况下,减小了设备的计算能力,同时提高了目录的提取速度。
本发明方法适用于对多种语言的文本文件提取目录,以中文为例,目录字符流一般为“第X章”,或者“第X章第Y篇”等,本发明方法可预定一个或多个目录字符,如“第”、“章”、“篇”等,并确定这些预定的目录字符对应的字节,即目录关键字节,参照这些目录关键字节到所述文本文件搜索对应的目录字节流,从而获取文本文件的目录。
优选的,本发明方法中在文本文件的全部字节中搜索目录字节流,具体包括:
步骤21,从文本文件的首字节开始,读取L数目的字节到包含L个存储空间的缓存中,其中,每个存储空间存储一个字节,各存储空间对应的地址为A1~AL,L为预设正整数;
步骤22,从所述缓存当前存储的字节中搜索预定分隔符字节,并判断相邻预定分隔符字节之间的字节流是否为目录字节流,若是,则确定搜索到目录字节流;其中,搜索到所述缓存内最后一个预定分隔符字节时,确定最后一个预定分隔符字节对应的存储空间地址AN,将地址AN~AL中的字节转存到所述缓存内地址为A1~AL-N+1的存储空间中,其中N为正整数,且1≤N≤L;
步骤23,从所述文本文件未被读取的字节中,读取数目为N-1的字节到所述缓存内地址为AL-N+2~AL的存储空间中,并返回执行步骤22,直到所述文本文件内全部字节都被读入所述缓存并完成目录字节流搜索。
具体的,设备分批从文本文件的全部字节中读取字节到缓存进行处理,并且读入的字节分别存储在缓存内地址为A1~AL的存储空间中。文本文件一般使用分隔符将文本内容分隔成不同的目录级别或段落,因此在缓存内查找分隔符对应的字节(简称分隔符字节),并对相邻分隔符字节之间的字节流内容分析查找目录字节流。此处,由于不确定文本文件具体使用哪种字符作为分隔符,本发明方法可预先提供多个不同优先等级的分隔符,如回车换行符、Tab字符等,在文本文件中搜索时,首先选择优先级别较高的分隔符(如回车换行符)对应的字节进行搜索,若确定缓存空间够大,且在前几次读入缓存内的字节中都未搜索到该分隔符字节时,可更改使用优先级别较低的分隔符(如Tab字符)对应的字节重新进行搜索,直到确定用于搜索的分隔符为文本文件中真正使用的分隔符。另外,若确定由于缓存空间较小,在前几次读入缓存内的字节中都未搜索到分隔符字节时,可在设备中申请更大存储空间的缓存,并重新读取文本文件的字节到该更大存储空间的缓存内进行处理。
具体的,上述步骤22中,判断相邻预定分隔符字节之间的字节流是否为目录字节流,具体包括:在所述相邻预定分隔符字节之间的字节流中搜索所述目录关键字节,若搜索到,则确定相邻预定分隔符字节之间的字节流为目录字节流。
本发明方法对在相邻预定分隔符字节之间的字节流中搜索所述目录关键字节的方式不作限定,可根据具体设备和文本文件确定。例如,本发明方法可以根据文本文件所使用的目录字符流的表达方式,将预定的目录字符分为主目录字符和副目录字符,相应的,可得到主目录关键字节和副目录关键字节,则在相邻预定分隔符字节之间的字节流中搜索目录关键字节时,可先在其中搜索主目录关键字节,若搜索到,再在该主目录关键字节之后的字节中搜索副目录关键字节,若再次搜索到,则确定当前相邻预定分隔符字节之间的字节流为目录字节流。以中文为例,文本文件通常使用“第X章”或者“第X章第Y篇”等作为目录字符流,假设预定的目录字符为“第”、“章”、“篇”,则可确定其中“第”为主目录字符,而“章”、“篇”为副目录字符,假设主目录字符“第”对应的主目录关键字节为“m1”,而副目录字符“章”、“篇”对应的副目录关键字节分别为“m2”、“m3”,则可在相邻预定分隔符字节之间的字节流中,先搜索“m1”,若没有搜索到,则结束本次搜索,若搜索到,则继续在其之后的字节(或与其相隔一个字节之后的字节)中搜索“m2”和“m3”,若搜索到“m2”或“m3”,则确定当前相邻预定分隔符字节之间的字节流为目录字节流。
优选的,所述步骤22中,仅在确定相邻预定分隔符字节之间的字节流对应的字节总数大于最大目录字节数时,对所述字节流是否为目录字节流进行判断;所述最大目录字节数为预先估计的目录字符流包含的最多字符数与所述文本文件中单个字符对应的最大字节数的乘积。
文本文件中使用的目录字符流中的字符总数通常有一个上限,以中文为例,所使用的目录字符流为“第X章”或者“第X章第Y篇”时,其中的字符总数通常不超过50字,而超过50字的字符流通常为文本文件的内容字符流,基于这种先验知识,可确定具有最大字符总数的目录字符流所对应的字节总数(以下简称最大目录字节数),则对缓存内的字节搜索目录字节流时,可忽略相邻预定分隔符字节之间超过所述最大目录字节数的字节流。其中,最大目录字节数可采用估算的方式确定:首先需要估算文本文件通常使用的目录字符流所具有的最大字符总数,以及当前文本文件中一个字符对应的最大字节数(对于定长编码,一个字符对应的字节数为定值,对于变长编码,一个字符对应的字节数是不定的,取其最大值),求所述目录字符流所具有的最大字符总数与一个字符对应的最大字节数的乘积,将该乘积确定为最大目录字节数。例如,假设文本文件中目录字符流具有的最大字符总数为50字,并且一个字符对应的最大字节数为2,则最大目录字节数为100,则在对缓存内的字节搜索目录字节流时,可忽略相邻预定分隔符字节之间超过100字节的字节流,即不对相邻预定分隔符字节之间超过100字节的字节流进行判断是否为目录字节流,采用该策略,可大大提高目录提取的速度。
优选的,所述步骤11中,在搜索目录字节流的过程中,每搜索到一个目录字节流时,滑过当前搜索到的目录字节流后设定数目的字节之后,再在所述文本文件剩余的字节中继续搜索目录字节流。
优选的,对于读取文本文件的字节到缓存中的情况,在所述缓存中每搜索到一个目录字节流时,
若所述缓存中当前目录字节流之后的字节总数大于所述设定数目,则滑过所述缓存中当前目录字节流之后设定数目的字节,再继续搜索目录字节流;
若所述缓存中当前目录字节流之后的字节总数比所述设定数目少Y,则从所述文本文件当前未被读取的字节中滑过Y个字节后,再读取L数目的字节到缓存中,并继续在所述缓存中搜索目录字节流,Y为正整数。
文本文件中内容字符流的字符总数通常有一个下限,例如,多数文本文件中,一个目录下的内容字符总数通常不小于500字,基于这种先验知识,可估算文本文件中内容字符流的字符总数下限,并确定该字符总数下限对应的字节数目,将该数目确定为设定数目,则在缓存中每搜索到一个目录字节流时,都直接滑过(被读取,但未被读入所述缓存中)所述目录字节流之后设定数目的字节,再继续搜索目录字节流。
具体实施中,由于所述设定数目为一估计值,因此实际执行操作时可能会出现下一个目录被滑过,而没被搜索到的情况,为尽量避免这种情况的发生,可采取以下方式:对文本文件提取前Q个目录字节流时,不采用所述滑过设定数目的方法,确定这Q个目录字节流中,相邻两个目录字节流之间包含的最小字节数目min,则从搜索到的第Q+1个目录字节流开始,每识别到一个目录字节流,则滑过min数目的字节,再继续搜索。
优选的,每搜索到一个目录字节流时,本发明方法还包括:
确定所述搜索到的目录字节流到所述文本文件首字节的偏移量。
具体的,在所述文本文件的全部字节中搜索目录字节流时,每搜索到一个目录字节流,都确定当前搜索到的目录字节流到所述文本文件首字节的偏移量,以便在生成所述文本文件的目录时,可以快速定位到对应的文本内容。
优选的,对于读取文本文件的字节到缓存中的情况,确定所述搜索到的目录字节流到所述文本文件首字节的偏移量,具体包括:
在所述缓存内每搜索到一个目录字节流时,确定当前所述文本文件中已被读取的字节总数S,其中S为正整数;确定所述缓存内当前目录字节流中第一个字节对应的存储空间地址AM,,其中M为正整数,且1<M<L;确定当前目录字节流到所述文本文件首字节的偏移量为S-(L-M)。
优选的,所述步骤12中,根据搜索到的全部目录字节流生成所述文本文件的目录,具体包括:
确定所述搜索到的全部目录字节流对应的全部目录字符流;
根据所述全部目录字符流,生成所述文本文件的目录。
优选的,本发明方法根据所述全部目录字符流,生成所述文本文件的目录之前,还包括:
筛除所述全部目录字符流中的错误目录字节流,得到筛除后的目录字符流;
根据所述筛除后的目录字符流,生成所述文本文件的目录。
优选的,筛除所述全部目录字符流中的错误目录字节流,具体包括:
确定各预定目录字符对应的常数,其中不同目录字符对应不同的常数;
针对所述全部目录字符流中的每一个目录字符流,确定其包含的所有预定目录字符对应的常数集合{Ei|i=1,2,3...},其中i为各预定目录字符在当前目录字符流中出现的次序号,Ei为当前目录字符流中第i个预定目录字符对应的常数;
针对所述每一个目录字符流,采用以下公式计算该目录字符流对应的运算值W:
W=E1+E2×pow(2,delta)+...+Ei×pow(2,delta×(i-1)),
其中,pow为指数运算,delta为运算因子;
获得所述全部目录字符流对应的运算值序列后,按设定区间将所述各运算值序列进行划分;
确定所述各区间中的运算值个数,若所述运算值个数小于设定阈值,则将该区间内各运算值对应的目录字符流确定为错误目录字符流,并将其筛除。
具体的,确定各预定目录字符对应的常数是为了将语言类字符映射到数字方面,从而方便设备对其进行归类分析,例如可将第”、“章”、“节”、“篇”、“回”等预定目录字符分别映射为常数10、20、30、40、50,这样针对每一个目录字符流,都可确定其包含的所有预定目录字符所对应的常数集合,利用该集合中的各个常数,即可得到一个与当前目录字符流相关的运算值W。进一步,为了避免出现字符流内包含相同的预定目录字符,但预定目录字符出现的位置不一致(如字符流{第5章2篇}和{第二篇文章的启示}),却计算得到相同运算值的情况,对所述每一个目录字符流计算相关运算值W时,还需考虑其中每个预定目录字符所在的位置,上述公式中pow(2,delta×(i-1)为当前目录字符流中出现的每个预定目录字符的加权系数,其中,pow为指数运算,i为各预定目录字符在当前目录字符流中出现的次序号,delta为运算因子,其作用是为了增大所述各目录字符流对应的运算值的区分度,以方便按设定区间将所述各运算值划分开来,具体实施中,所述delta可根据实际经验取值,但需注意的是,delta值过大时可能会使得运算值W过长而出现存储越界现象。
针对所述每一个目录字符流,采用以上公式计算相应的运算值以后,可发现绝大部分目录字符流对应的运算值都大致相同(或在同一区间内相差不大),并且这部分目录字符流为具有相同规则的目录字符流,如{第1回}、{第2回}....{第20回}等目录字符流对应的运算值都是一致的,而少数目录字符流对应的运算值则很特别,如与其他绝大部分目录字符流对应的运算值相差很大,则这部分目录字符流就是属于被搜索到的错误目录字符流,如{第二篇文章的启示}、{第三次比赛回合中}、{第一次我们有了新的篇章}等。具体实施中,按照设定区间划分所述运算值序列后,也可以计算各区间内运算值个数占总运算值个数的百分比,并将其中百分比小于设定阈值的区间对应的各目录字符流确定为错误目录字符流。
本发明提供一种目录生成方法实施例,用于对TXT文本文件提取目录,假设当前TXT文本文件的语言类型为中文,预定主目录字符为“第”,对应的主目录字节为“m1”,副目录字符为“章”、“节”、“篇”、“回”、“集”,对应的副目录字节分别为“m2”、“m3”、“m4”、“m5”、“m6”,预定分隔符为回车换行符,回车符对应的字节为“0X0D”,换行符对应的字节为“0X0A”,则预定分隔符字节为“0X0D,0X0A”。
本方法实施例具体包括如下步骤:
步骤31,申请包含1024个一维数组的缓存,从TXT文本文件的首字节开始,读取1024个字节到所述缓存。
此步骤首先需根据TXTX文本文件的前导码bom(若没有bom,则根据TXT文本文件的前1024个字节流内容)判断该文本文件的字符编码类型,假设为UTF8码,则该文本文件中单个字符对应的最大字节数为5;估计目录字符流中最多包含50个字符,则计算最大目录字节数为250。
步骤32,在所述缓存中当前存储的字节中搜索预定分隔符字节,并判断相邻预定分隔符字节之间的字节流是否为目录字节流,若是,则确定搜索到目录字节流。
设当前读入缓存的字节流为{W1,W2,...,Wd,0X0D,0X0A,X1,X2,...,Xa,0X0D,0X0A,Y1,...,Yb,0X0D,0X0A,Z1,...,Zc},则本步骤中具体还包括以下各步骤:
步骤32_1,从当前缓存中搜索“0X0D,0X0A”字节,搜索到之后,判断第一个“0X0D,0X0A”字节和第二个“0X0D,0X0A”字节之间的字节流{X1,X2,...,Xa}是否为目录字节流。
具体的,首先在该段字节流内搜索主目录字节“m1”,若搜索到,则继续在该段字节流内“m1”之后的字节中搜索以下副目录字节“m2”、“m3”、“m4”、“m5”、“m6”,若搜索到其中任意一个副目录字节,则确定该字节流为目录字节流;若在该段字节流内未搜索到主目录字节“m1”,或未搜索到任意一个副目录字节,则转到下一段字节流(下一相邻回车换行符对应的字节之间的字节流)中去搜索。假设确定字节流{X1,X2,...,Xa}为目录字节流,且确定当前目录字节流的第一个字节X1对应的缓存存储地址为35,以及所述TXT文本文件中已被读取的字节总数为2450,则可确定当前目录字节流到文本文件首字节的偏移量为2450-(1024-35)=1461。
步骤32_2,搜索到第三个“0X0D,0X0A”字节后,确定第二个“0X0D,0X0A”字节和第三个“0X0D,0X0A”字节之间的字节流{Y1,...,Yb}中包含的字节总数为795,则可直接滑过该段字节流,不对其判断是否为目录字节流。
步骤32_3,确定缓存内当前搜索到的第三个“0X0D,0X0A”字节为最后一个“0X0D,0X0A”字节时,结束当前步骤32,继续执行步骤33。
步骤33,确定缓存内当前搜索到的第三个“0X0D,0X0A”字节为最后一个“0X0D,0X0A”字节,并且该“0X0D,0X0A”字节对应的缓存存储地址为993和994,则将缓存内当前地址为995~1024的数组(共29个数组)中存储的字节转存到该缓存内地址为1~29的数组中;
步骤34,从TXT文本文件未被读取的字节中继续读取数目为994个字节到该缓存中地址为30~1024的数组中,并返回执行步骤32,直到该TXT文本文件内全部字节都被读入所述缓存。
依据上述过程对该TXT文本文件的全部字节进行搜索后,初步搜索到若干目录字节流,假设这些目录字节流对应的目录字符流为:
第1章
第2章
第3章
第五集团军大举进攻
第4章
第5章
第一次我们有了新的篇章
......
第20章
步骤35,筛除以上初步得到的目录字符流中的错误目录字符流,具体包括以下步骤:
步骤35_1,确定各预定目录字符“第”、“章”、“节”、“篇”、“回”、“集”对应的常数分别为10、20、30、40、50、60;
步骤352,针对所述每个目录字符流,确定其中包含的所有预定目录字符对应的常数集合,例如针对目录字符流{第1章},确定其对应的常数集合为{E1=10,E2=20},针对目录字符流{第五集团军大举进攻},确定其对应的常数集合为{E1=10,E2=50},针对目录字符流{第一次我们有了新的篇章},确定其对应的常数集合为{E1=10,E2=40,E3=20};
步骤36_2,针对所述每个目录字符流,采用以下公式计算其对应的运算值:
W=E1+E2×pow(2,delta)+...+Ei×pow(2,delta×(i-1)),
其中,W为该目录字符流对应的运算值,pow为指数运算,delta为运算因子,此处delta取值为3,Ei为当前目录字符流中出现的第i个预定目录字符对应的常数;
例如,针对目录字符流{第1章}、{第2章}、{第3章}、{第4章}、{第5章}......{第20章},其对应的运算值都为:
W=10+20×pow(2,3×(2-1))=170;
针对目录字符流{第五集团军大举进攻},其对应的运算值为:
W=10+60×pow(2,3×(2-1))=490;
针对目录字符流{第一次我们有了新的篇章},其对应的运算值为:
W=10+40×pow(2,3×(2-1))+20×pow(2,3×(3-1))=10+40×8+20×64=1770;
具体的,按照上述公式针对以上全部目录字符流计算后可得出以下运算值序列:
170,170,170,490,170,170,1770......170
步骤36_3,按区间将所述各运算值进行划分,并计算各区间中的运算值个数百分比。
具体的,以所述运算值序列的最小值170和最大值1770为边界,以设定区间200进行划分,分别为:
区间[170,370>中的运算值个数为20,占总运算值个数的91%;
区间[370,570>中的运算值个数为1,占总运算值个数的4%;
区间[570,770>中的运算值个数为0;
区间[770,970>中的运算值个数为0;
区间[970,1170>中的运算值个数为0;
区间[1170,1370>中的运算值个数为0;
区间[1370,1570]中的运算值个数为0;
区间[1570,1770]中的运算值个数为1,占总运算值个数的4%;
步骤36_4,设定阈值为5%,将以上百分比小于5%的各区间内对应的目录字符流确定为错误字符流,并将其筛除。
具体的,可确定目录字符流{第五集团军大举进攻}和{第一次我们有了新的篇章}为错误目录字符流,将其删除,得到筛除后的目录字符流,用于生成文本目录。
相应的,本发明还提供一种目录生成装置,用于根据文本文件生成目录,如图2所示,该装置包括:
目录字节流搜索模块201,用于在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
目录生成模块202,用于根据搜索到的全部目录字节流生成所述文本文件的目录。
优选的,所述目录字节流搜索模块201在所述文本文件的全部字节中搜索目录字节流,具体包括:
步骤121,从文本文件的首字节开始,读取L数目的字节到包含L个存储空间的缓存中,其中,每个存储空间存储一个字节,各存储空间对应的地址为A1~AL,L为预设正整数;
步骤122,从所述缓存当前存储的字节中搜索预定分隔符字节,并判断相邻预定分隔符字节之间的字节流是否为目录字节流,若是,则确定搜索到目录字节流;其中,搜索到所述缓存内最后一个预定分隔符字节时,确定最后一个预定分隔符字节对应的存储空间地址AN,将地址AN~AL中的字节转存到所述缓存内地址为A1~AL-N+1的存储空间中,其中N为正整数,且1≤N≤L;
步骤123,从所述文本文件未被读取的字节中,读取数目为N-1的字节到所述缓存内地址为AL-N+2~AL的存储空间中,并返回执行步骤122,直到所述文本文件内全部字节都被读入所述缓存并完成目录字节流搜索。
所述目录生成装置各个模块的具体实现功能参见上述目录生成方法的具体实现过程,在此不再赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (12)

1.一种目录生成方法,其特征在于,包括:
在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
根据搜索到的全部目录字节流生成所述文本文件的目录。
2.如权利要求1所述的方法,其特征在于,在文本文件的全部字节中搜索目录字节流,具体包括:
步骤21,从文本文件的首字节开始,读取L数目的字节到包含L个存储空间的缓存中,其中,每个存储空间存储一个字节,各存储空间对应的地址为A1~AL,L为预设正整数;
步骤22,从所述缓存当前存储的字节中搜索预定分隔符字节,并判断相邻预定分隔符字节之间的字节流是否为目录字节流,若是,则确定搜索到目录字节流;其中,搜索到所述缓存内最后一个预定分隔符字节时,确定最后一个预定分隔符字节对应的存储空间地址AN,将地址AN~AL中的字节转存到所述缓存内地址为A1~AL-N+1的存储空间中,其中N为正整数,且1≤N≤L;
步骤23,从所述文本文件未被读取的字节中,读取数目为N-1的字节到所述缓存内地址为AL-N+2~AL的存储空间中,并返回执行步骤22,直到所述文本文件内全部字节都被读入所述缓存并完成目录字节流搜索。
3.如权利要求2所述的方法,其特征在于,
所述步骤22中,仅在确定相邻预定分隔符字节之间的字节流对应的字节总数大于最大目录字节数时,对所述字节流是否为目录字节流进行判断;
所述最大目录字节数为预先估计的目录字符流包含的最多字符数与所述文本文件中单个字符对应的最大字节数的乘积。
4.如权利要求1~3任一所述的方法,其特征在于,在搜索目录字节流的过程中,每搜索到一个目录字节流时,滑过当前搜索到的目录字节流后设定数目的字节之后,再在所述文本文件剩余的字节中继续搜索目录字节流。
5.如权利要求4所述的方法,其特征在于,对于读取文本文件的字节到缓存中的情况,在所述缓存中每搜索到一个目录字节流时,
若所述缓存中当前目录字节流之后的字节总数大于所述设定数目,则滑过所述缓存中当前目录字节流之后设定数目的字节,再继续搜索目录字节流;
若所述缓存中当前目录字节流之后的字节总数比所述设定数目少Y,则从所述文本文件当前未被读取的字节中滑过Y个字节后,再读取L数目的字节到缓存中,并继续在所述缓存中搜索目录字节流,Y为正整数。
6.如权利要求1~3任一所述的方法,其特征在于,每搜索到一个目录字节流时,还包括:
确定所述搜索到的目录字节流到所述文本文件首字节的偏移量。
7.如权利要求6所述的方法,其特征在于,对于读取文本文件的字节到缓存中的情况,确定搜索到的目录字节流到所述文本文件首字节流的偏移量,具体包括:
在所述缓存内每搜索到一个目录字节流时,确定当前所述文本文件中已被读取的字节总数S,其中S为正整数;
确定所述缓存内当前目录字节流中第一个字节对应的存储空间地址AM,其中M为正整数,且1<M<L;
确定当前目录字节流到所述文本文件首字节的偏移量为S-(L-M)。
8.如权利要求1所述的方法,其特征在于,根据搜索到的全部目录字节流生成所述文本文件的目录,具体包括:
确定所述搜索到的全部目录字节流对应的全部目录字符流;
根据所述全部目录字符流,生成所述文本文件的目录。
9.如权利要求8所述的方法,其特征在于,根据所述目录字符流,生成所述文本文件的目录之前,还包括:
筛除所述全部目录字符流中的错误目录字符流,得到筛除后的目录字符流;
根据所述筛除后的目录字符流,生成所述文本文件的目录。
10.如权利要求9所述的方法,其特征在于,筛除所述全部目录字符流中的错误目录字节流,具体包括:
确定各预定目录字符对应的常数,其中不同目录字符对应不同的常数;
针对所述全部目录字符流中的每一个目录字符流,确定其包含的所有预定目录字符对应的常数集合{Ei|i=1,2,3...},其中i为各预定目录字符在当前目录字符流中出现的次序号,Ei为当前目录字符流中第i个预定目录字符对应的常数;
针对所述每一个目录字符流,采用以下公式计算该目录字符流对应的运算值W:
W=E1+E2×pow(2,delta)+...+Ei×pow(2,delta×(i-1)),
其中,pow为指数运算,delta为运算因子;
获得所述全部目录字符流对应的运算值序列后,按设定区间将所述运算值序列进行划分;
确定所述各区间中的运算值个数,若所述运算值个数小于设定阈值,则将该区间内各运算值对应的目录字符流确定为错误目录字符流,并将其筛除。
11.一种目录生成装置,其特征在于,包括:
目录字节流搜索模块,用于在文本文件的全部字节中搜索目录字节流,所述目录字节流为包含预定的目录关键字节的字节流,所述目录关键字节为预定目录字符对应的字节;
目录生成模块,用于根据搜索到的全部目录字节流生成所述文本文件的目录。
12.如权利要求11所述的装置,其特征在于,所述目录字节流搜索模块在文本文件的全部字节中搜索目录字节流,具体包括:
步骤121,从文本文件的首字节开始,读取L数目的字节到包含L个存储空间的缓存中,其中,每个存储空间存储一个字节,各存储空间对应的地址为A1~AL,L为预设正整数;
步骤122,从所述缓存当前存储的字节中搜索预定分隔符字节,并判断相邻预定分隔符字节之间的字节流是否为目录字节流,若是,则确定搜索到目录字节流;其中,搜索到所述缓存内最后一个预定分隔符字节时,确定最后一个预定分隔符字节对应的存储空间地址AN,将地址AN~AL中的字节转存到所述缓存内地址为A1~AL-N+1的存储空间中,其中N为正整数,且1≤N≤L;
步骤123,从所述文本文件未被读取的字节中,读取数目为N-1的字节到所述缓存内地址为AL-N+2~AL的存储空间中,并返回执行步骤122,直到所述文本文件内全部字节都被读入所述缓存并完成目录字节流搜索。
CN201110457702.9A 2011-12-30 2011-12-30 一种目录生成方法和装置 Expired - Fee Related CN103186621B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110457702.9A CN103186621B (zh) 2011-12-30 2011-12-30 一种目录生成方法和装置
US13/731,732 US9069775B2 (en) 2011-12-30 2012-12-31 Methods and devices for generating directories

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110457702.9A CN103186621B (zh) 2011-12-30 2011-12-30 一种目录生成方法和装置

Publications (2)

Publication Number Publication Date
CN103186621A true CN103186621A (zh) 2013-07-03
CN103186621B CN103186621B (zh) 2016-07-06

Family

ID=48677790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110457702.9A Expired - Fee Related CN103186621B (zh) 2011-12-30 2011-12-30 一种目录生成方法和装置

Country Status (2)

Country Link
US (1) US9069775B2 (zh)
CN (1) CN103186621B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838682A (zh) * 2014-03-10 2014-06-04 华为技术有限公司 一种文件目录的读取方法和设备
CN104424214A (zh) * 2013-08-22 2015-03-18 北大方正集团有限公司 一种自定义提取目录内容的方法和装置
CN106951540A (zh) * 2017-03-23 2017-07-14 掌阅科技股份有限公司 文件目录的生成方法、装置、服务器及计算机存储介质
CN107533512A (zh) * 2015-06-29 2018-01-02 华为技术有限公司 目录中表项合并的方法以及设备
CN108920631A (zh) * 2018-06-29 2018-11-30 郑州云海信息技术有限公司 一种文件查询方法、装置、设备及可读存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6227055B1 (ja) * 2016-05-25 2017-11-08 ヤフー株式会社 ストレージシステム、およびファイル書き込み方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215528A1 (en) * 1999-08-05 2008-09-04 Eric Sedlar Multi-Model Access To Data
CN101620607A (zh) * 2008-07-01 2010-01-06 全国组织机构代码管理中心 全文检索方法及系统
CN102082964A (zh) * 2009-11-30 2011-06-01 康佳集团股份有限公司 一种显示文本文件的方法、系统及机顶盒

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6082776A (en) * 1997-05-07 2000-07-04 Feinberg; Lawrence E. Storing personal medical information
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US8756692B2 (en) * 2011-07-06 2014-06-17 Eureka! It Works, Llc Controlling network-based applications with social media postings
WO2013095615A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080215528A1 (en) * 1999-08-05 2008-09-04 Eric Sedlar Multi-Model Access To Data
CN101620607A (zh) * 2008-07-01 2010-01-06 全国组织机构代码管理中心 全文检索方法及系统
CN102082964A (zh) * 2009-11-30 2011-06-01 康佳集团股份有限公司 一种显示文本文件的方法、系统及机顶盒

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424214A (zh) * 2013-08-22 2015-03-18 北大方正集团有限公司 一种自定义提取目录内容的方法和装置
CN104424214B (zh) * 2013-08-22 2017-10-27 北大方正集团有限公司 一种自定义提取目录内容的方法和装置
CN103838682A (zh) * 2014-03-10 2014-06-04 华为技术有限公司 一种文件目录的读取方法和设备
CN107533512A (zh) * 2015-06-29 2018-01-02 华为技术有限公司 目录中表项合并的方法以及设备
CN106951540A (zh) * 2017-03-23 2017-07-14 掌阅科技股份有限公司 文件目录的生成方法、装置、服务器及计算机存储介质
CN108920631A (zh) * 2018-06-29 2018-11-30 郑州云海信息技术有限公司 一种文件查询方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
US9069775B2 (en) 2015-06-30
CN103186621B (zh) 2016-07-06
US20130173670A1 (en) 2013-07-04

Similar Documents

Publication Publication Date Title
CN103186621A (zh) 一种目录生成方法和装置
CN102799647B (zh) 网页去重方法和设备
US20160210352A1 (en) Information search method and system
CN100452055C (zh) 一种用于文本或网络内容分析的大规模多关键词匹配方法
CN101727447A (zh) 基于url的正则表达式的生成方法和装置
CN103136228A (zh) 一种图片搜索方法以及图片搜索装置
CN102402537A (zh) 中文网页文本除重系统及方法
CN106027064B (zh) 硬件数据压缩器、硬件数据压缩方法及计算机程序产品
CN103778141A (zh) 一种混合pdf图书目录自动抽取算法
CN103324646A (zh) 检索支援装置及检索支援方法
CN104317891A (zh) 一种对页面标注标签的方法及装置
US20140214854A1 (en) Extracting method, computer product, extracting system, information generating method, and information contents
CN104281275B (zh) 一种英文的输入方法和装置
CN107085568A (zh) 一种文本相似度判别方法及装置
CN101369278A (zh) 一种近似匹配方法和装置
CN105630748A (zh) 信息处理设备和信息处理方法
CN103309892A (zh) 用于信息处理和Web浏览历史导航的方法和设备及电子装置
US9524354B2 (en) Device, method, and program for processing data with tree structure
CN103218452A (zh) 一种识别Hub页中有效链接的方法和装置
CN103136212A (zh) 一种类别新词的挖掘方法及装置
US20080114742A1 (en) Object entity searching method and object entity searching device
CN105574004A (zh) 一种网页去重方法和设备
US6470362B1 (en) Extracting ordered list of words from documents comprising text and code fragments, without interpreting the code fragments
CN102737017A (zh) 一种提取页面主题的方法和装置
JP5159277B2 (ja) N文字索引生成装置、文書検索装置、n文字索引生成方法、文書検索方法、n文字索引生成プログラムおよび文書検索プログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220617

Address after: 3007, Hengqin international financial center building, No. 58, Huajin street, Hengqin new area, Zhuhai, Guangdong 519031

Patentee after: New founder holdings development Co.,Ltd.

Patentee after: FOUNDER APABI TECHNOLOGY Ltd.

Address before: 100871, Beijing, Haidian District Cheng Fu Road 298, founder building, 9 floor

Patentee before: PEKING UNIVERSITY FOUNDER GROUP Co.,Ltd.

Patentee before: FOUNDER APABI TECHNOLOGY Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160706