CN103294714B - 索引字段的字段属性值的存储位置的确定方法以及装置 - Google Patents
索引字段的字段属性值的存储位置的确定方法以及装置 Download PDFInfo
- Publication number
- CN103294714B CN103294714B CN201210049213.4A CN201210049213A CN103294714B CN 103294714 B CN103294714 B CN 103294714B CN 201210049213 A CN201210049213 A CN 201210049213A CN 103294714 B CN103294714 B CN 103294714B
- Authority
- CN
- China
- Prior art keywords
- field
- attribute value
- index
- array element
- long
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种索引字段的字段属性值的存储位置的确定方法以及装置,包括:确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长,然后针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,将确定出的数组元素作为该索引字段的字段属性值的存储位置。本技术方案与现有技术相比较,能够以确定的各索引字段的字段属性值分别对应的位长为依据,确定索引字段的字段属性值的存储位置,从而减少了存储空间的浪费,进而提高了存储资源的利用率。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种索引字段的字段属性值的存储位置的确定方法以及装置。
背景技术
目前,搜索引擎在对用户提交的检索项进行检索后,可以通过正排索引对检索结果进行过滤、统计以及排序。具体地,正排索引中保存有文档标识(一般称为Docid)与字段的对应关系、字段与字段属性值的存储位置的对应关系,一般将上述对应关系称为索引,基于该索引,搜索引擎可以根据检索结果对应的文档标识读取到与检索结果相关的字段属性值,进而,根据读取到的字段属性值对检索结果进行过滤、统计以及排序。实际应用中,搜索引擎还可以根据正排索引对要保存的文档进行保存,即根据正排索引将文档包括的各字段的字段属性值写入正排索引指定的存储位置。
图1示出了正排索引中对应文档保存文档包括的各字段的字段属性值的结构示意图。正排索引中依次将第一文档101、第二文档102以及第三文档103(此处以第一文档101、第二文档102以及第三文档103为示例,实际应用中可能存在更多的文档)分别包括的字段的字段属性值保存在存储空间中,其中,第一文档101包括第1字段101A、第2字段101B以及第3字段101C(此处仅以第1字段101A、第2字段101B以及第3字段101C为示例,实际应用中可以存在更多字段),第二文档102包括第1字段102A、第2字段102B以及第3字段102C,正排索引中,文档一般通过文档标识表示,保存文档与文档包括的字段的对应关系,即保存该文档的文档标识与字段的对应关系。例如,第一文档101的文档标识为Doc1,则可以建立Doc1与第一文档101包括的第1字段101A、第2字段101B以及第3字段101C的对应关系,进一步,正排索引中还保存第1字段101A、第2字段101B以及第3字段101C与存储第1字段101A、第2字段101B以及第3字段101C分别对应的字段属性值的存储位置的对应关系。
在对文档进行保存时,会根据文档中各字段的字段属性值的取值范围将字段属性值以不同的数据类型进行存储,并将存储字段属性值的存储结构设置为定长数组,每个数组包括多个数组元素,一个数组元素对应一个数组下标,一般以文档标识作为数组下标,在数组下标对应的数组元素中保存该文档包括的字段的字段属性值。实际应用中,一般根据业务内容将字段属性值限制在设定的取值范围内,该取值范围一般不会达到基本存储类型定义的取值范围的上限,例如,将根据业务内容确定的取值范围为0~1023的字段属性值,采用16位无符号整型(即uint16)的基本存储类型进行保存,其中,需要位长为10bits的存储空间存储该字段属性值,而uint16类型提供2字节(即16bits)的存储空间,显然,采用uint16类型对该字段属性值进行保存时,会存在6bits未使用的存储空间,因此,存在浪费存储空间的问题,如表1所示:
根据表1所示内容,用于存储字段属性值的存储类型对应的存储空间为56bits(即16+8+8+8+8+8),大于字段属性值的取值范围所需的存储空间32bits(即10+1+7+4+7+3),具体地,如图2所示的字段的存储空间的结构示意图,该结构图包括第一存储空间201、第二存储空间202、第三存储空间203、第四存储空间204、第五存储空间205以及第六存储空间206,上述存储空间依次用于存储字段1至字段6的字段属性值,其中,用于存储字段1的字段属性值的第一存储空间201的位长为16bits(4字节),每个存储空间的阴影部分为存储字段的字段属性值的部分,该第一存储空间201中除去用于存储字段1的字段属性值的位长10bits后,空闲6bits,同理,第二存储空间202、第三存储空间203、第四存储空间204、第五存储空间205以及第六存储空间206分别会空闲出1bits、7bits、4bits、7bits以及5bits,即设置出的用于存储表1中各字段的字段属性值的存储空间会存在24bits的空闲位长,显然,该存储各字段属性值的方式,浪费了大量的存储空间。
综上所述,现有的确定字段属性值的存储方式,造成了存储资源的浪费。
发明内容
有鉴于此,本申请实施例提供一种索引字段的字段属性值的存储位置的确定方法以及装置,用于解决现有的确定字段属性值的存储方式造成的存储资源的浪费的问题。
本申请实施例通过如下技术方案实现:
根据本申请实施例的一个方面,提供了一种索引字段的字段属性值的存储位置的确定方法,包括:
确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长;
针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,将确定出的数组元素作为该索引字段的字段属性值的存储位置。
根据本申请实施例的另一个方面,还提供了一种索引字段的字段属性值的存储位置的确定装置,包括:
位长确定单元,用于确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长;
数组元素确定单元,用于针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与所述位长确定单元确定出的该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素;
存储位置确定单元,用于将所述数组元素确定单元确定出的数组元素作为该索引字段的字段属性值的存储位置。
通过本申请实施例提供的上述至少一个技术方案,在确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长后,针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,将该确定出的数组元素作为该索引字段的字段属性值的存储位置。本技术方案与现有技术相比较,能够以确定的各索引字段的字段属性值分别对应的位长为依据,确定索引字段的字段属性值的存储位置,从而减少了存储空间的浪费,进而提高了存储资源的利用率。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:
图1为背景技术提供的正排索引中对应文档保存文档包括的各字段的字段属性值的结构示意图;
图2为背景技术提供的字段的存储空间的结构示意图;
图3为本申请实施例一提供的确定索引字段的字段属性值的存储位置的流程示意图;
图4为本申请实施例一提供的确定各索引字段的字段属性值分别对应的位长的流程示意图;
图5为本申请实施例一提供的确定索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素的流程示意图;
图6为本申请实施例二提供的保存表2中各索引字段的字段属性值的数组的结构示意图;
图7为本申请实施例二提供的确定索引字段的字段属性值的存储位置的流程示意图;
图8为本申请实施例二提供的存储确定的索引字段的字段属性值的数组的结构示意图;
图9为本申请实施例四提供的一种索引字段的字段属性值的存储位置的确定装置的结构示意图。
具体实施方式
为了给出节省存储资源的实现方案,本申请实施例提供了一种索引字段的字段属性值的存储位置的确定方法以及装置,以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请各实施例涉及的索引字段,一般指待建立索引的各文档包括的用于建立索引的相关字段(或称为关键字段),在对文档建立索引后,可以根据文档对应的文档标识索引到文档包括的各字段,本申请将上述字段统一称为索引字段。
本申请各实施例涉及的索引字段的字段属性值,即索引字段对应的字段属性的取值,一般在对索引字段进行存储时,将索引字段的字段属性值以二进制值的方式保存,以标识索引字段。在根据文档标识索引到文档包括的各索引字段后,还可以进一步根据各索引字段与存储该索引字段的字段属性值的存储位置的对应关系,确定出索引字段的字段属性值的存储位置。
本申请各实施例涉及的索引字段的字段属性值对应的位长,为索引字段的字段属性值的信息长度,该信息长度一般指通过二进制值的位数表示,例如,字段属性值对应的二进制值为16位,则该字段属性值的位长为16bits,一般情况下,索引字段的字段属性值对应的位长可根据索引字段的具体字段属性或所属业务类别等信息确定。
本申请各实施例中将以定义的数组结构对各索引字段的字段属性值进行存储,具体地,为能够成功确定出各索引字段的字段属性值的存储位置,一般会预先定义出用于存储字段属性值的数组,该数组一般由一个或多个数组元素组成。数组包括的数组元素的个数可以根据要保存的字段属性值的位长进行确定,也可以默认数组包括一个数组元素,然后在确定字段属性值的存储位置时,根据需要再为数组创建更多的数组元素。每个数组元素可以通过以下方式表示:
Array[arrayPos]
上述数组元素的表示方式中,Array为数组名称,arrayPos为数组下标,即数组元素在数组中的位置对应的标识。实际应用中,数组元素的位域长度可以根据要保存的索引字段的字段属性值进行确定,并且,一般情况下,数组包括的各数组元素的位域长度一致,本申请优选数组元素的位域长度为32bits(对应4字节)。
实施例一
该实施例一提供了一种索引字段的字段属性值的存储位置的确定方法,该方法能够应用在搜索引擎中,通过在搜索引擎中应用本技术方案,能够减少对存储资源的浪费。
图3示出了本申请实施例一提供的确定索引字段的字段属性值的存储位置的流程示意图。具体地,该确定索引字段的字段属性值的存储位置的过程,主要包括以下步骤:
步骤301、确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长。
该步骤301中,待建立索引的文档,可以是用于建立正排索引的文档,实际应用中,还可以是建立其他相关索引的文档,此处不再一一列举。
步骤302、针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
该步骤302中,在针对每个索引字段执行上述操作时,可以先将待建立索引的文档包括的各索引字段按照设定方式排序,然后根据排序结果从各索引字段中依次选择索引字段,每次选择一个索引字段,再针对每次选择的索引字段执行本步骤对应的上述操作,例如,将各索引字段按照字段属性值分别对应的位长从大到小的顺序排序,在排序结果中,首先针对位长最大的字段属性值对应的第一个索引字段执行本步骤对应的上述操作,然后针对排序结果中位长次于该位长最大的字段属性值的字段属性值对应的第二个索引字段,执行本步骤对应的上述操作,直至依次针对排序结果中的每个索引字段执行完本步骤对应的上述操作。
步骤303、将针对每个索引字段确定出的数组元素,确定为该索引字段的字段属性值的存储位置。
该步骤303中,将最终确定出待建立索引的文档包括的各索引字段的字段属性值的存储位置。其中,在数组元素提供的空闲的位域长度足够的情况下,每个数组元素可以保存多个索引字段的字段属性值。
至此,确定索引字段的字段属性值的存储位置的流程结束。
图3对应的流程中,以各索引字段的字段属性值对应的位长为依据,确定各索引字段的字段属性值的存储位置,从而避免了用于存储字段属性值的存储空间存在大量空闲的存储空间的问题,减少了存储资源的浪费。
在图3对应的流程包括的步骤301中,即在确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长时,各索引字段的字段属性值分别对应的位长可以预先保存在指定的存储位置,在需要为待建立索引的文档包括的各索引字段的字段属性值分配存储空间(即确定存储位置)时,可以实时从保存字段属性值对应的位长的存储位置中读取该位长,继而执行步骤302以及步骤303。具体地,本申请实施例一提供了一种确定各索引字段的字段属性值分别对应的位长优选实施方式。图4示出了该确定各索引字段的字段属性值分别对应的位长的流程示意图,如图4所示,该确定各索引字段的字段属性值分别对应的位长的过程,主要包括以下步骤:
步骤401、获取预先保存的字段信息,该字段信息中包括字段标识以及该字段标识对应字段的字段属性值对应的位长。
步骤402、将字段信息中包括的分别与各索引字段的字段标识对应的位长,确定为索引字段的字段属性值分别对应的位长。
至此,确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长的流程结束。
图4对应流程包括的步骤401中,获取的字段信息可以为预先以指定方式保存的字段信息。例如,以可扩展标记语言(ExtensibleMarkupLanguage,XML)文件格式保存的字段信息,实际应用中,可以根据用于读取该字段信息的应用程序的需要设置相应的存储该字段信息的文件格式以及存储方式,本技术方案优选的以XML文件格式保存字段信息,该XML文件格式的可扩展性强,能够对要保存的每个数组进行清楚的描述,以该XML文件格式保存的信息能够被多种工具读取到。并且,该字段信息,除保存字段标识以及该字段标识对应字段的字段属性值对应的位长外,还可以进一步保存索引字段的字段名称以及该索引字段对应的字段类型。具体地,如表2所示,字段信息包括索引字段的字段标识、字段名称、字段类型以及索引字段的字段属性值对应的位长:
表2:
该表2中,将保存字段属性值的顺序作为各字段属性值对应的索引字段的字段标识,字段名称依次为a、b、c、d、e以及f,字段类型都为Uint32。
在图4对应的流程中,若基于业务内容的需要导致文档中的部分或全部索引字段的字段属性值对应的位长发生变化时,只需要更改预先保存的字段信息,然后执行图3对应的流程,根据确定出的位长重新确定各索引字段的字段属性值的存储位置即可。
在图3对应流程包括的步骤302中,即针对一个索引字段,从定义的用于保存字段属性值的数组中,确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素中,在从定义的数组中确定出与索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素时,可以按照定义的数组包括的各数组元素的位置顺序,确定出索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。具体地,图5示出了一种确定索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素的流程示意图,具体地,该确定索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素的过程,主要包括以下步骤:
步骤501、按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,选择一个数组元素。
该步骤501中,定义出的数组可以包括多个数组元素,也可以默认包括一个数组元素,该数组包括的数组元素的位域长度可以预先根据需要保存的字段属性值的位长进行设定。本技术方案中优选的设置各数组元素的位域长度为32bits(对应4字节),如此,用于保存字段属性值的数组对应的存储空间将为32bits的整数倍的位域长度对应的存储空间,例如,若数组包括3个数组元素,每个数组元素的位域长度为32bits,则数组将被分配96bits的存储空间。
步骤502、确定选择的数组元素提供的空闲位域长度是否大于或等于选择出的索引字段的字段属性值对应的位长,若是,执行步骤503;若否,执行步骤504。
该步骤502中,空闲位域长度即暂未保存字段属性值的位域长度,选择的数组元素中若为设置出其他任意一个或多个索引字段的字段属性值的位域长度,则该数组元素提供的空闲位域长度即为该数组元素的位域长度,则该数组元素提供的空闲位域长度一般是大于索引字段的字段属性值对应的位长的,则执行步骤503;若该选择的数组元素提供的空闲位域长度是该数组元素中设置出其他任意一个或多个索引字段的字段属性值的位域长度后剩余的位域长度,若该剩余的位域长度大于或等于选择出的索引字段的字段属性值对应的位长,则执行步骤503,否则,执行步骤504。
步骤503、确定选择出的数组元素为该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
步骤504、按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,选择下一个数组元素,返回步骤502。
该步骤504中,通过选择下一个数组元素并返回执行步骤502,以保证能够从依次选择的数组元素中确定出一个提供的空闲位域长度大于或等于选择出的索引字段的字段属性值对应的位长的数组元素。
至此,确定索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素的流程结束。
在图5对应的流程包括的步骤504之前,即在选择下一个数组元素之前,可以根据数组包括的数组元素的情况进行相应的判断,即确定数组中除包括已经选择出的数组元素外,是否存在下一个数组元素,若不存在,则创建一个数组元素。例如,若数组元素默认包括一个数组元素,则在该数组元素提供的空闲位域长度小于选择出的索引字段的字段属性值对应的位长时,需要为该数组分配一个与设定的数组元素的位域长度对应的存储空间,以为该数组再创建出一个数组元素,从而可以在该创建的数组元素中确定出用于存储选择出的索引字段的字段属性值的位域长度;若该数组中存在下一个可供选择的数组元素,则可以直接按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序选择下一个数组元素。
在图3对应的流程包括的步骤403之后,即在将确定出的数组元素作为该索引字段的字段属性值的存储位置之后,可以保存索引字段的字段属性值的存储位置对应的位置信息,该位置信息可以包括如下信息:
该索引字段的字段属性值在确定出的数组元素中的起始存储位置;以及
确定出的数组元素的数组下标。
其中,索引字段的字段属性值在确定出的数组元素中的起始存储位置,可以为索引字段的字段属性值在确定出的数组元素中占用的位域长度的起始位置相对该数组元素在数组中的起始位置的差值(即位移信息),或者,根据实际需要以其他指定方式表示的索引字段的字段属性值在确定出的数组元素中的起始存储位置。
进一步,为了能够保证在确定出的用于存储索引字段的字段属性值的存储位置上成功的进行字段属性值的写入与读取操作,还可以对应位置信息保存索引字段的字段名称以及字段标识。并且,基于保存的位置信息,可以确定出在该位置信息对应的存储位置上写入字段属性值的写掩码,以及在该位置信息对应的存储位置上读取字段属性值的读掩码,具体地,本申请将结合实施例三进行相应的描述。
实施例二
该实施例二提供了一种与实施例一提供的索引字段的字段属性值的存储位置的确定方法对应的应用场景,通过在该应用场景中应用本技术方案,能够解决现有的确定字段属性值的存储方式造成的存储资源的浪费的问题。
本实施例二将对应上表2提供的信息进行相应的描述,实际应用中,该表2中列举的信息是从预先保存的索引字段的字段信息中获取的,以下代码为采用XML文件格式的配置文件保存字段信息的方式:
该代码中提供的字段信息对应表2中的字段信息,表2中的字段信息是以该代码中定义各索引字段的字段信息的顺序对各索引字段分配字段标识。
以数组包括的数组元素分别为32bits的数组元素为例,在按照表2从预先保存的字段信息中读取的各索引字段的字段信息的顺序,对各索引字段的字段属性值进行保存时,如图6所示,保存表2中各索引字段的字段属性值需要3个数组元素,即96bits,具体地,在第一个数组元素601中设置出索引字段a的17bits的位域长度,因为索引字段b的字段属性值对应的位长也为17bits,第一个数组元素601中的剩余位域长度为15bits(即32-17=15),小于索引字段b的字段属性值对应的位长,因此需要在第二数组元素602中设置出保存索引字段b的字段属性值的位域长度,如此,依次将表2中的各索引字段的字段属性值在数组中设置出与各字段属性值对应的位域长度。
根据图6所示的数组的位域长度为96bits,而表2中包括的各索引字段的字段属性值对应的位长总共为62bits(及17+17+4+13+2+9=62),显然,该存储字段属性值的方式存在34bits的存储空间的浪费。
因此,本技术方案在采用配置文件的基础上,进一步提供了一种索引字段的字段属性值的存储位置的确定方法,具体地,如图7所示,确定索引字段的字段属性值的存储位置的过程,主要包括以下步骤:
步骤701、将表2中获取到的索引字段的字段信息根据各索引字段的字段属性值对应的位长,从大到小对索引字段进行排序。
该步骤701中,在对表2中的各索引字段进行排序后,得到的索引字段的顺序依次为索引字段a、索引字段b、索引字段d、索引字段f、索引字段c以及索引字段e,其中,索引字段a、索引字段b的字段属性值对应的位长都为17bits,本技术方案根据表2中字段标识的顺序,将索引字段a确定为字段属性值对应的位长最大的索引字段,实际应用中,可以从索引字段a、索引字段b任意选择一个作为字段属性值对应的位长最大的索引字段,或者根据需要进行选择,此处不再赘述。
步骤702、选择索引字段a,将该索引字段的字段属性值的存储位置设置在数组的第一个数组元素中。
该步骤702中,本实施例二以数组默认包括一个数组元素为例进行说明,在对待建立索引的文档包括的索引字段a分配保存该索引字段a的字段属性值的存储位置前,该数组包括的各数组元素的位域长度是空闲的,并且,默认位长最大的字段属性值的存储位置为数组的第一个数组元素,则该第一个数组元素的剩余位域长度为15bits。相应的,该字段属性值对应的位长最大的索引字段a的位置信息为:数组元素的数组下标为0,位移信息为0。
步骤703、选择索引字段b,并且索引字段b的字段属性值对应的位长17bits,大于数组的第一个数组元素提供的空闲位置15bits。
步骤704、基于数组包括一个数组元素,为该数组建立一个数组元素,并将该数组元素确定为保存索引字段b的字段属性值的存储位置。
该步骤704中,将建立的数组元素确定为保存选择索引字段b的字段属性值的存储位置后,该数组元素提供的空闲位域长度为15bits。索引字段b的字段属性值的位置信息为:数组元素的数组下标为1,位移信息为0。
步骤705、选择索引字段d,该索引字段d的字段属性值对应的位长为13bits,小于数组的第一个数组元素提供的空闲位域长度15bits,将该第一个数组元素作为索引字段d的存储位置。
该步骤705中,在将第一个数组元素作为索引字段d的存储位置后,第一个数组元素提供的空闲位域长度为2bits。索引字段d的字段属性值的位置信息为:数组元素的数组下标为0,位移信息为17。
步骤706、选择索引字段f,该索引字段f的字段属性值对应的位长为9bits,大于数组的第一个数组元素提供的空闲位域长度2bits,小于第二个数组元素(即建立的数组元素)提供的空闲位域长度15bits,将该第二个数组元素作为索引字段f的存储位置。
该步骤706中,将该第二个数组元素作为索引字段f的存储位置,第二个数组元素提供的空闲位域长度为6bits。索引字段f的字段属性值的位置信息为:数组元素的数组下标为1,位移信息为17。
步骤707、选择索引字段c,该索引字段c的字段属性值对应的位长为4bits,大于数组的第一个数组元素提供的空闲位域长度2bits,小于第二个数组元素提供的空闲位域长度6bits,将该第二个数组元素作为索引字段c的存储位置。
该步骤707中,索引字段c的字段属性值的位置信息为:数组元素的数组下标为1,位移信息为26。
步骤708、选择索引字段e,该索引字段e的字段属性值对应的位长为2bits,等于数组的第一个数组元素提供的空闲位域长度2bits,将该第一个数组元素作为索引字段e的存储位置。
该步骤708中,索引字段e的字段属性值的位置信息为:数组元素的数组下标为0,位移信息为30。
步骤709、记录保存各索引字段的字段属性值的存储空间为两个数组元素。
至此,确定索引字段的字段属性值的存储位置的流程结束。
图8示出了存储图7对应流程确定的索引字段的字段属性值的数组的结构示意图,如图8所示,数组包括第一数组元素801以及第二数组元素802,其中,第一数组元素801中依次设置出索引字段a、索引字段d以及索引字段e的字段属性值的位域长度17bits、13bits以及2bits,第二数组元素802中依次设置出索引字段b、索引字段f以及索引字段c的字段属性值的位域长度17bits、9bits以及4bits。
实施例三
该实施例三提供了一种在基于实施例一或实施例二确定出的各索引字段的存储位置后,写入字段属性值以及读取字段属性值的方法。
继续对应上表2提供的信息进行相应的描述,表3示出了实施例二确定出各索引字段的字段属性值的存储位置后,各存储位置对应的位置信息、字段标识以及字段名称的对应关系,具体地,如表3所示:
表3:
对应该表3提供的信息,首先,可以根据表3中提供的各索引字段的字段属性值的存储位置对应的位置信息,以及各索引字段的字段属性值对应的位长,确定出在各索引字段的字段属性值的存储位置读取字段属性值的读掩码,以及写入字段属性值的写掩码。应当理解,该实施例提供的在字段属性值的存储位置通过读掩码读取字段属性值以及通过写掩码写入字段属性值的方式,为本实施例三提供的一种优选实施方式,实际应用中,可以根据需要采用相应的字段属性值的读取与写入的方式。
根据表3提供的位置信息,可以通过以下表达式(1)确定出读取字段属性值的读掩码:
RMask=2^(32-bitMove)-2^(32-bitMove-bitLen)(1)
该表达式(1)中,RMask为读掩码的标识,bitMove为位移信息的标识,bitLen为索引字段的字段属性值对应的位长的标识。
根据该表达式(1)可以确定出在索引字段的字段属性值的存储位置读取字段属性值的读掩码,例如,确定在索引字段a的字段属性值的存储位置读取字段属性值的读掩码为:
RMask=2^(32-0)-2^(32-0-17)
根据上式得到RMask的十进制值为4294934528,该值对应的二进制值为11111111111111111000000000000000,对应的十六进制值为FFFF8000,可以将RMask以十六进制值标识为FFFF8000。
相应的,采用表达式(1)还可以确定出其他索引字段的字段属性值的读掩码。
采用确定出的读掩码,在确定出要读取的索引字段的字段标识后,确定出与字段标识对应保存的索引字段的字段属性值的存储位置的位置信息,根据以下读取字段属性值的表达式(2),则能够在确定出的位置信息对应的存储位置上读取到需要读取的索引字段的字段属性值:
Value=(Array[arrayPos]&RMask)>>(32–bitMove–bitLen)(2)
该表达式(2)中,Value为字段属性值的标识,Array[arrayPos]为定义的数组对应的数组元素,其中,Array为数组标识,arrayPos为数组中数组元素的数组下标的标识。
下面,以读取索引字段a的字段属性值为例进行描述,设置该字段属性值为00000000011110001:
Value=(Array[0]&FFFF8000)>>(32–0–17)
该表达式中,通过将Array[0]与FFFF8000进行与运算(运算时采用二进制按位进行与运算),得到01E20000,然后将该01E20000对应的二进制按位向右移15(32–0–17=15)位,得到000000F1,该十六进制值000000F1对应的二进制值为00000000011110001,即索引字段a的字段属性值。
对应上述读取字段属性值的描述,本实施例三还提供了一种写入索引字段a的字段属性值的方法,具体如下:
将上述确定出的二进制值取反,即可以得到在索引字段a的字段属性值的存储位置写入字段属性值的写掩码(WMask)为0x00007FFF。
相应的,采用表达式(1)以及对表达式(1)得到的结果的二进制值取反还可以确定出其他索引字段的字段属性值的写掩码。
根据WMask为00007FFF,以及以下表达式(3),能够在要写入的索引字段的字段属性值的存储位置中写入字段属性值:
Array[arrayPos]=(Array[arrayPos]&WMask)|(Value<<(32–bitMove–bitLen))(3)
根据该表达式(3),以在索引字段a的字段属性值的存储位置写入索引字段a的字段属性值为例进行描述,依然设置该字段属性值为00000000011110001(对应十六进制值000000F1):
Array[0]=(Array[0]&00007FFF)|(000000F1<<(32–0–17))
根据该式,若得到Array[0]&00007FFF的结果为00000000,根据(000000F1<<(32–0–17))得到的结果为01E20000,将00000000与01E20000执行或运算,则可以将01E20000写入到索引字段a的字段属性值的存储位置。
实施例四
该实施例四提供了一种与实施例一提供的一种索引字段的字段属性值的存储位置的确定方法对应的装置,该装置能够应用在搜索引擎中,通过在搜索引擎中应用本技术方案,能够减少对存储资源的浪费。
图9示出了本申请实施例四提供的一种索引字段的字段属性值的存储位置的确定装置的结构示意图,具体地,如图9所示,该装置包括:
位长确定单元901、数组元素确定单元902以及存储位置确定单元903,其中:
位长确定单元901,用于确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长;
数组元素确定单元902,用于针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与位长确定单元901确定出的该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素;
存储位置确定单元903,用于将所述数组元素确定单元902确定出的数组元素作为该索引字段的字段属性值的存储位置。
本申请实施例四提供的优选实施方式中,图9所示装置包括的位长确定单元901,具体用于获取预先保存的字段信息,所述字段信息中包括字段标识以及该字段标识对应字段的字段属性值对应的位长;将所述字段信息中包括的分别与所述各索引字段的字段标识对应的位长,确定为所述索引字段的字段属性值分别对应的位长。
本申请实施例四提供的优选实施方式中,图9所示装置包括的位长确定单元901,具体用于获取预先以可扩展标记语言XML文件格式保存的字段信息。
本申请实施例四提供的优选实施方式中,图9所示装置包括的存储位置确定单元902,具体用于将所述各索引字段按照设定方式排序,根据排序结果从所述各索引字段中每次选择一个索引字段,并针对每次选择的索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
本申请实施例四提供的优选实施方式中,图9所示装置包括的数组元素确定单元902,具体用于将所述各索引字段按照字段属性值分别对应的位长从大到小的顺序排序。
本申请实施例四提供的优选实施方式中,图9所示装置包括的数组元素确定单元902,具体用于按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,确定出该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
本申请实施例四提供的优选实施方式中,图9所示装置包括的数组元素确定单元902,具体用于按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,选择一个数组元素,确定选择的数组元素提供的空闲位域长度是否大于或等于选择出的索引字段的字段属性值对应的位长,若是,确定选择出的数组元素为该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素;若否,选择下一个数组元素,并确定选择的数组元素提供的空闲位域长度是否大于或等于选择出的索引字段的字段属性值对应的位长,直到选择出的数组元素提供的空闲位域长度大于或等于选择出的索引字段的字段属性值对应的位长。
本申请实施例四提供的优选实施方式中,图9所示装置包括的数组元素确定单元902,具体用于在选择下一个数组元素之前,确定所述数组是否存在下一个数组元素,若不存在,则创建一个数组元素。
本申请实施例四提供的优选实施方式中,图9所示装置包括的存储位置确定单元903,还用于在将确定出的数组元素作为该索引字段的字段属性值的存储位置之后,保存该索引字段的字段属性值的存储位置对应的位置信息,所述位置信息包括:该索引字段的字段属性值在确定出的所述数组元素中的起始存储位置以及确定出的所述数组元素的数组下标。
应当理解,以上装置包括的单元仅为根据该装置实现的功能进行的逻辑划分,实际应用中,可以进行上述单元的叠加或拆分。并且该实施例提供的装置所实现的功能与上述实施例提供的索引字段的字段属性值的存储位置的确定方法流程一一对应,对于该装置所实现的更为详细的处理流程,在上述方法实施例中已做详细描述,此处不再详细描述。
并且,本实施例四中的索引字段的字段属性值的存储位置的确定装置还具有能够实现实施例一、实施例二以及实施例三方案的功能模块,此处不再赘述。
本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种索引字段的字段属性值的存储位置的确定方法,其特征在于,包括:
确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长;
针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,将确定出的数组元素作为该索引字段的字段属性值的存储位置;
其中,确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长,包括:
获取预先保存的字段信息,所述字段信息中包括字段标识以及该字段标识对应字段的字段属性值对应的位长;
将所述字段信息中包括的分别与所述各索引字段的字段标识对应的位长,确定为所述索引字段的字段属性值分别对应的位长。
2.如权利要求1所述的方法,其特征在于,获取预先保存的字段信息,包括:
获取预先以可扩展标记语言XML文件格式保存的字段信息。
3.如权利要求1所述的方法,其特征在于,针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,包括:
将所述各索引字段按照设定方式排序,根据排序结果从所述各索引字段中依次选择索引字段,并针对每次选择的索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
4.如权利要求3所述的方法,其特征在于,将所述各索引字段按照设定方式排序,包括:
将所述各索引字段按照字段属性值分别对应的位长从大到小的顺序排序。
5.如权利要求1或3所述的方法,其特征在于,针对一个索引字段,从定义的用于保存字段属性值的数组中确定出与该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,包括:
按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,确定出该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素。
6.如权利要求5所述的方法,其特征在于,按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,确定出该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素,包括:
按照定义的用于保存字段属性值的数组包括的各数组元素的位置顺序,选择一个数组元素;
确定选择的数组元素提供的空闲位域长度是否大于或等于选择出的索引字段的字段属性值对应的位长;
若是,确定选择出的数组元素为该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素;
若否,选择下一个数组元素,并确定选择的数组元素提供的空闲位域长度是否大于或等于选择出的索引字段的字段属性值对应的位长,直到选择出的数组元素提供的空闲位域长度大于或等于选择出的索引字段的字段属性值对应的位长。
7.如权利要求6所述的方法,其特征在于,选择下一个数组元素之前,还包括:
确定所述数组是否存在下一个数组元素,若不存在,则创建一个数组元素。
8.如权利要求1所述的方法,其特征在于,将确定出的数组元素作为该索引字段的字段属性值的存储位置之后,还包括:
保存该索引字段的字段属性值的存储位置对应的位置信息;
所述位置信息包括:该索引字段的字段属性值在确定出的所述数组元素中的起始存储位置以及确定出的所述数组元素的数组下标。
9.一种索引字段的字段属性值的存储位置的确定装置,其特征在于,包括:
位长确定单元,用于确定待建立索引的文档包括的各索引字段的字段属性值分别对应的位长;
数组元素确定单元,用于针对每个索引字段,从定义的用于保存字段属性值的数组中确定出与所述位长确定单元确定出的该索引字段的字段属性值对应的位长匹配的位域长度所在的数组元素;
存储位置确定单元,用于将所述数组元素确定单元确定出的数组元素作为该索引字段的字段属性值的存储位置;
其中,所述位长确定单元,具体用于获取预先保存的字段信息,所述字段信息中包括字段标识以及该字段标识对应字段的字段属性值对应的位长;将所述字段信息中包括的分别与所述各索引字段的字段标识对应的位长,确定为所述索引字段的字段属性值分别对应的位长。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210049213.4A CN103294714B (zh) | 2012-02-28 | 2012-02-28 | 索引字段的字段属性值的存储位置的确定方法以及装置 |
HK13112078.5A HK1184880A1 (zh) | 2012-02-28 | 2013-10-28 | 索引字段的字段屬性值的存儲位置的確定方法以及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210049213.4A CN103294714B (zh) | 2012-02-28 | 2012-02-28 | 索引字段的字段属性值的存储位置的确定方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103294714A CN103294714A (zh) | 2013-09-11 |
CN103294714B true CN103294714B (zh) | 2016-04-27 |
Family
ID=49095602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210049213.4A Active CN103294714B (zh) | 2012-02-28 | 2012-02-28 | 索引字段的字段属性值的存储位置的确定方法以及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103294714B (zh) |
HK (1) | HK1184880A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346458B (zh) * | 2014-10-31 | 2018-05-18 | 阿里巴巴(中国)有限公司 | 数据存储方法和存储设备 |
CN108897819B (zh) * | 2018-06-20 | 2021-09-21 | 北京密境和风科技有限公司 | 一种数据搜索方法和装置 |
CN112445790B (zh) * | 2019-08-29 | 2024-03-01 | 北京沃东天骏信息技术有限公司 | 一种报表数据存储方法、装置、设备及介质 |
CN110765111B (zh) * | 2019-10-28 | 2023-03-31 | 深圳市商汤科技有限公司 | 存储和读取方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040005715A (ko) * | 2003-10-31 | 2004-01-16 | (주)넷피아닷컴 | 검색 시스템 및 그 방법 |
CN1648901A (zh) * | 2005-02-03 | 2005-08-03 | 中国科学院计算技术研究所 | 大规模关键词匹配的方法和系统 |
CN101145155A (zh) * | 2007-10-24 | 2008-03-19 | 中山大学 | 一种电子词典数据存储格式及其检索方法 |
CN101393529A (zh) * | 2008-11-07 | 2009-03-25 | 用友软件股份有限公司 | 一种实现计算机软件多语言支持的方法 |
CN101556610A (zh) * | 2009-05-04 | 2009-10-14 | 中兴通讯股份有限公司 | 网络处理器使用的建表和查表方法 |
-
2012
- 2012-02-28 CN CN201210049213.4A patent/CN103294714B/zh active Active
-
2013
- 2013-10-28 HK HK13112078.5A patent/HK1184880A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040005715A (ko) * | 2003-10-31 | 2004-01-16 | (주)넷피아닷컴 | 검색 시스템 및 그 방법 |
CN1648901A (zh) * | 2005-02-03 | 2005-08-03 | 中国科学院计算技术研究所 | 大规模关键词匹配的方法和系统 |
CN101145155A (zh) * | 2007-10-24 | 2008-03-19 | 中山大学 | 一种电子词典数据存储格式及其检索方法 |
CN101393529A (zh) * | 2008-11-07 | 2009-03-25 | 用友软件股份有限公司 | 一种实现计算机软件多语言支持的方法 |
CN101556610A (zh) * | 2009-05-04 | 2009-10-14 | 中兴通讯股份有限公司 | 网络处理器使用的建表和查表方法 |
Also Published As
Publication number | Publication date |
---|---|
HK1184880A1 (zh) | 2014-01-30 |
CN103294714A (zh) | 2013-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103186622B (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN103294714B (zh) | 索引字段的字段属性值的存储位置的确定方法以及装置 | |
CN103765381B (zh) | 对b+树的并行操作 | |
CN102243660A (zh) | 一种数据访问方法及设备 | |
CN105549936A (zh) | 数据表的显示方法和装置 | |
CN104750727A (zh) | 一种列式内存存储查询装置及列式内存存储查询方法 | |
CN102024046A (zh) | 数据重复性校验方法和装置及系统 | |
CN101840430A (zh) | 智能卡数据库多表操作方法及装置 | |
CN104424240A (zh) | 多表关联方法、主服务节点、计算节点及系统 | |
CN103885721A (zh) | 一种在键-值系统中的数据存储或读取方法、装置 | |
CN101853263B (zh) | 资料结构化处理系统及方法 | |
CN107103035A (zh) | 本地表数据更新方法及装置 | |
CN110222046A (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN101814064B (zh) | 报表模板的创建方法、报表生成方法及报表系统 | |
CN105426131A (zh) | 一种kv存储实现方法和装置 | |
CN101702180B (zh) | 一种关联字段值的查找方法及系统 | |
CN104932982B (zh) | 一种消息访存的编译方法及相关装置 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN116069330A (zh) | 中后台模板构建方法、装置和存储介质 | |
CN110262755A (zh) | 一种嵌入式系统的文件存储方法 | |
CN105095478A (zh) | 一种获取分布式文件系统中文件的创建时间的方法及装置 | |
CN112035380B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN105955727A (zh) | 一种通用内存实体的创建方法和访问方法 | |
CN105518790B (zh) | 数据写入的方法及装置 | |
CN110377601B (zh) | 一种基于B树数据结构的MapReduce计算过程优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1184880 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1184880 Country of ref document: HK |