CN108846121A - 一种数据搜索方法和装置 - Google Patents
一种数据搜索方法和装置 Download PDFInfo
- Publication number
- CN108846121A CN108846121A CN201810681785.1A CN201810681785A CN108846121A CN 108846121 A CN108846121 A CN 108846121A CN 201810681785 A CN201810681785 A CN 201810681785A CN 108846121 A CN108846121 A CN 108846121A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- search
- reader
- memory increase
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据搜索方法和装置,该方法包括接收应用服务器发送的数据搜索请求;根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;将所述搜索结果发送给所述应用服务器进行显示。本发明给出的数据搜索方法采用并行搜索方式,既能提高数据搜索效率,又能保证数据搜索结果的实时性和准确性。
Description
技术领域
本发明涉及数据搜索技术领域,具体而言,涉及一种数据搜索方法和装置。
背景技术
数据搜索是信息领域非常核心的功能,通过搜索可以迅速定位到用户所需要的信息,但是目前的数据搜索大部分是非实时的,即采用定时更新索引的方式实现数据更新和搜索,从而造成很多需要进行实时数据的搜索过程无法完成。
发明内容
有鉴于此,本发明实施例的目的在于提供一种数据搜索方法和装置,能够有效改善上述问题。
一方面,本发明较佳实施例提供了一种数据搜索方法,应用于数据搜索服务器,所述方法包括:
接收应用服务器发送的数据搜索请求;
根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;
通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;
将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;
将所述搜索结果发送给所述应用服务器进行显示。
进一步地,将通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理的步骤包括:
获取用于保存删除数据的删除ID列表,并将该删除ID列表添加至所述第一索引读取器;
根据所述删除ID列表从所述第一索引读取器搜索到的数据信息中删除与该删除ID列表对应的数据信息。
进一步地,所述方法还包括:
接收所述应用服务器发送的实时更新数据;
将所述实时更新数据写入待更新数据队列以使所述第二索引读取器读取该实时更新数据并将其更新到内存增量索引中;
判断所述内存增量索引是否满足新建条件,若满足,则删除当前内存增量索引,并进行新的内存增量索引的创建;
在完成新的内存增量索引的创建后对所述第二索引读取器进行更新。
进一步地,判断所述内存增量索引是否满足新建条件的步骤包括:
判断当前时间点是否为所述内存增量索引的预设维护时间点;或者
判断所述内存增量索引中包含的索引数量是否达到预设值。
进一步地,所述方法还包括:
按照预设时间间隔启动磁盘全量索引定时维护任务,并从数据库服务器中获取待做索引表和待更新数据列表;
根据所述待更新数据列表从所述数据库服务器中获取对应的待更新数据源;
将所述待更新数据源写入磁盘全量索引中,并将所述磁盘全量索引的写入结果写入所述待做索引表;
对所述第一索引读取器进行更新,并删除当前内存增量索引。
进一步地,所述方法还包括:
根据所述待做索引表的写入结果判断是否存在写入异常的数据,若存在,则返回异常结果给所述应用服务器进行显示。
进一步地,在进行应用重启后,所述方法还包括:
获取数据库服务器中的待做索引表,基于该待做索引表获取在应用重启之前的预设时长内的数据更新列表,并根据所述数据更新列表创建新的内存增量索引;
判断在进行内存增量索引创建期间是否存在新的更新数据产生,若存在,则基于该更新数据对创建的内存增量索引进行更新。
进一步地,若在进行内存增量索引创建时的创建时间覆盖了预设的增量维护时间点,则删除已创建的内存增量索引,并进行新的内存增量索引的创建。
进一步地,所述搜索服务器中预设有用于搜索结果排序的排序索引组,所述排序索引组中包括多个维度的排序规则;将所述搜索结果发送给所述应用服务器进行显示的步骤包括:
基于所述排序索引组中的排序规则对所述搜索结果进行排序,并将排序后的搜索结果发送给所述应用服务器进行显示。
另一方面,本发明较佳实施例还提供一种数据搜索装置,应用于数据搜索服务器,所述装置包括:
请求接收模块,用于接收应用服务器发送的数据搜索请求;
读取器调用模块,用于根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;
数据搜索去重模块,用于通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;
结果合并模块,用于将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;
结果返回模块,用于将所述搜索结果发送给所述应用服务器进行显示。
与现有技术相比,本发明实施例提供一种数据搜索方法和装置,其中,该数据搜索方法采用基于磁盘全量索引和内存增量索引的并行数据搜索方式,既能提高数据搜索效率,同时还能够实现对实时更新数据的搜索,保证数据搜索结果的实时性和准确性。
另外,本发明实施例中给出的数据搜索方法和装置中还采用排序索引的方式,可有效解决现有技术中存在的搜索时排序占用资源和效率低的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的数据搜索方法和装置的应用场景示意图。
图2为本发明实施例提供的数据搜索服务器的方框结构示意图。
图3为本发明实施例提供的数据搜索方法的流程示意图。
图4为图3所示的步骤S12的子流程示意图。
图5为图3所示的步骤S12的另一子流程示意图。
图6为图3所示的步骤S13的子流程示意图。
图7为本发明实施例提供的数据搜索方法的另一流程示意图。
图8为本发明实施例提供的数据搜索装置的方框结构示意图。
图标:10-数据搜索服务器;100-数据搜索装置;110-请求接收模块;120-读取器调用模块;130-数据搜索去重模块;140-结果合并模块;150-结果返回模块;200-存储器;300-存储控制器;400-处理器。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
如图1所示,为本发明实施例提供的数据搜索方法和装置的应用场景示意图,该应用场景包括数据搜索服务器10、数据库服务器和多个应用服务器,所述数据搜索服务器10、数据库服务器以及所述多个应用服务器之间通过网络连接,所述网络可以是有线网络或无线网络,本实施例在此不做限制。
其中,所述应用服务器用于发送数据搜索请求,同时可在获取数据更新时将更新数据推送给所述数据搜索服务器10进行索引更新,且各所述应用服务器之间相互独立。可选地,所述应用服务器可以是但不限于智能手机、IPAD、电脑等。
所述数据库服务器用于保存建立索引需要的数据源和待做索引表,该待做索引表用于记录数据更新索引的情况等。
所述数据搜索服务器10用于实时更新、创建内存增量索引和磁盘全量索引,并提供数据索引和搜索服务等。在实际实施时,所述数据搜索服务器10可以包括索引服务器和搜索服务器,即所述数据搜索服务器10中的功能可由所述索引服务器和所述搜索服务器共同完成,且所述搜索服务器和所述索引服务器通信连接。其中,所述索引服务器可用于构建、维护磁盘全量索引和内存增量索引等,且在内存增量索引中的索引量达到条件后将该内存增量索引合并到磁盘全量索引中;所述搜索服务器可用于读取磁盘上的磁盘全量索引和内存中内存增量所引实现数据的并行搜索等,本实施例在此不做具体限制。
可选地,如图2所示,为所述数据搜索服务器10的方框结构示意图,该数据搜索服务器10包括数据搜索装置100、存储器200、存储控制器300以及处理器400。其中,所述存储器200、存储控制器300和处理器400各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件之间通过一条或多条通讯总线或信号线实现电性连接。所述数据搜索装置100包括至少一个可以软件或固件的形式存储于所述存储器200中或固化在所述数据搜索服务器10的操作***中的软件功能模块。所述处理器400在所述存储控制器300的控制下访问所述存储器200,以用于执行所述存储器200中存储的可执行模块,例如所述数据搜索装置100所包括的软件功能模块及计算机程序等,进而实现本发明实施例中的数据搜索方法。可选地,所述数据搜索服务器备10可以是,但不限于智能手机、IPAD、电脑、服务器等。
应当理解,图2所示的结构仅为示意。所述数据搜索服务器10可以具有比图2所示更多或者更少的组件,或者具有与图2所示不同的配置。其中,图2所示的各组件可以由软件、硬件或者其组合实现。
进一步地,如图3所示,是本发明较佳实施例提供的数据搜索方法的流程示意图,所述数据搜索方法应用于图1中所示的数据搜索服务器10。下面结合图2对所述数据搜索方法的具体流程及步骤进行详细阐述。
步骤S11,接收应用服务器发送的数据搜索请求;
步骤S12,根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;
步骤S13,通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;
步骤S14,将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;
步骤S15,将所述搜索结果发送给所述应用服务器进行显示。
本实施例中,上述步骤S11-步骤S15中在所述数据搜索服务器10接收到应用服务器发送的数据搜索请求后,采用基于磁盘全量索引(DiskIndex)和内存增量索引(RamIndex)并行的数据搜索方式实现数据搜索、查询,既能提高数据搜索效率,同时还能够实现对实时更新数据的搜索,保证数据搜索结果的实时性和准确性。
详细地,步骤S11中所述数据搜索请求中可以包含但不限于搜索信息的主键值、发送该数据搜索请求的应用服务器的字段信息、发送时间等。步骤S12中,为了确保搜索结果的准确性和实时性,所述磁盘全量索引和所述第一索引读取器可按照预设时间间隔进行维护,所述内存增量索引和所述第二索引读取器可根据各所述应用服务器推送过来的实时更新数据进行实时更新、维护,进而通过对所述磁盘全量索引和所述第一索引读取器的定时维护和对所述内存增量索引和所述第二索引读取器的实时维护确保数据搜索结果的全面性和实时性。可选地,如图4所示,在本实施例中,下面结合步骤S120-步骤S123对所述内存增量索引和所述第二索引读取器的实时维过程进行介绍。
步骤S120,接收所述应用服务器发送的实时更新数据;
步骤S121,将所述实时更新数据写入待更新数据队列以使所述第二索引读取器读取该实时更新数据并将其更新到内存增量索引中;
步骤S122,判断所述内存增量索引是否满足新建条件,若满足,则删除当前内存增量索引,并进行新的内存增量索引的创建;
步骤S123,在完成新的内存增量索引的创建后对所述第二索引读取器进行更新。
其中,步骤S120-步骤S123中给出的内存增量索引的更新维护是实现实时数据搜索的关键,且应用服务器实时更新数据到数据搜索服务器10中的内存增量索引是可行的,但是内存增量索引中的索引数量不能过大,因此,本实施例中可根据时间和记录条数两个维度来保证内存增量索引的大小,进而解决内存增量索引的读写分离问题。
例如实际实施时,所述数据搜索服务器10可判断所述内存增量索引是否满足新建条件的方法可包括:判断当前时间点是否为所述内存增量索引的预设维护时间点;或者判断所述内存增量索引中包含的索引数量是否达到预设值。其中,可以理解的是,在进行内存增量索引维护时,索引数量的优先级高于预设维护时间,即当所述内存增量索引中的索引数量达到时,而无论当前时间点是否为预设维护时间点均进行索引维护。
另外,在对所述内存增量索引进行维护之后还需对第二索引读取器进行更新,以确保实时数据搜索的有效性。
进一步地,如图5所示,下面结合步骤S124-步骤S127对所述磁盘全量索引和所述第一索引读取器的定时维护的过程进行介绍。
步骤S124,按照预设时间间隔启动磁盘全量索引定时维护任务,并从数据库服务器中获取待做索引表和待更新数据列表;
步骤S125,根据所述待更新数据列表从所述数据库服务器中获取对应的待更新数据源;
步骤S126,将所述待更新数据源写入磁盘全量索引中,并将所述磁盘全量索引的写入结果写入所述待做索引表;
步骤S127,对所述第一索引读取器进行更新,并删除当前内存增量索引。
本实施例中,所述磁盘全量索引保存的是全量数据对应的搜索索引,实际实施时,由于磁盘全量索引一般保存在硬盘上,因此磁盘全量索引的更新采用非实时性更新方式实现,即可通过批量任务并根据时间段读取数据库服务器中的数据源进行磁盘全量索引的更新操作。
具体地,在步骤S124-步骤S127中,所述预设时间间隔可根据实际需求进行设计,如0.5小时、1小时等。此外,在根据待更新数据列表进行批量式数据更新时,可将更新结果记录在所述所述待做索引表中,如每条数据源更新到索引是否成功以及失败的原因。以用于对更新结果进行监控,并对异常情况进行处理。
对此,在一个实施方式中,所述数据搜索服务器10可根据所述待做索引表的写入结果判断是否存在写入异常的数据,若存在,则返回异常结果给所述应用服务器进行显示。其中,为了快速识别异常类型并进行相应的异常处理操作,本实施例中,可预先设计针对不同异常类型的多种错误码,然后根据错误码进行判断是否需要进行重新更新等,如错误码001:读取数据失败;错误码002:构建索引写入异常……
进一步地,在现有的数据搜索中,很多数据搜索技术均采用两个内存索引相互替换的方式,但这种方式控制复杂并且容易丢失数据,因此,针对本实施中上述的基于磁盘全量索引和内存增量索引并行搜索的方式,本发明中给出的数据搜索方法可采用基于时间段实现磁盘全量索引和内存增量索引的无缝切换,具体过程如下。
(1)所述内存增量索引是根据时间段建立的,如可以小时为单位,每隔1小时建立一个新的内存增量索引;(2)磁盘全量索引维护也是根据时间段建立的,且所述磁盘全量索引的维护时间间隔可与所述内存增量索引新建的时间间隔保持一致。例如,每隔1小时读取一次待做索引表并进行磁盘全量索引的维护,然后在磁盘全量索引维护完成后将同时段旧的内存增量索引删除掉,进行新的内存增量索引的创建,从而实现磁盘全量索引和内存增量索引之间的无缝切换,有效确保数据的完整性。可以理解的是,在此处若所述数据搜索服务器10包括索引服务器和搜索服务器,那么,可在所述索引服务器完成磁盘全量索引的维护后发送通知给所述搜索服务器删除同时段的旧的内存增量索引。
进一步地,在步骤S13中,由于本发明中的数据搜索方法是并行搜索,那么通过第一索引读取器和所述第二索引读取器搜索到的数据可能存在重复的情况,因此,如图6所示,本实施例中可通过步骤S130和步骤S131对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理的步骤进行介绍。
步骤S130,获取用于保存删除数据的删除ID列表,并将该删除ID列表添加至所述第一索引读取器;
步骤S131,根据所述删除ID列表从所述第一索引读取器搜索到的数据信息中删除与该删除ID列表对应的数据信息。
具体地,在步骤S130-步骤S131中,所述数据搜索服务器10的内存中预设有一个删除数据ID列表,在对所述磁盘全量索引进行维护时,包括数据的删除和数据新增两个过程,所述删除数据ID列表中保存的ID为被删除数据的唯一标识。例如,对于删除的数据的ID会加入上述删除数据ID列表中,但对于删除数据ID列表只需过滤一次即可生效,下次只需过滤新增的删除数据ID列表就可以了。
但应注意的是,若重建索引读取器(如第一索引读取器或第二索引读取器)则需要将所有的删除数据ID列表进行过滤操作,因此内存中还有一个新增的删除ID列表。过滤操作仅针对磁盘全量索引对应的第一索引读取器读取的数据进行,而内存增量索引是不需要的,因为内存增量索引是最新的数据。另外,在实际实施时,数据新增过程其实类似数据删除过滤,从磁盘增量索引中逻辑删除掉,然后内存增量索引中保留最新更新的数据。
进一步地,步骤S14和步骤S15中,在所述数据搜索服务器10进行搜索结果发送时,现有的搜索排序一般情况下需要将排序字段调入内存中来保证搜索排序效率,但此种做法不仅耗内存,而且非常浪费CPU资源。因此,在本实施例中可通过设置一种规则进行搜索结果排序,如下表1所示。
对此,为实现上述表1中的排序结果,本实施例中,所述搜索服务器中可预设有用于搜索结果排序的排序索引组,所述排序索引组中包括多个维度的排序规则;在将所述搜索结果发送给所述应用服务器进行显示时,所述数据搜索服务器10可基于所述排序索引组中的排序规则对所述搜索结果进行排序,并将排序后的搜索结果发送给所述应用服务器进行显示。
具体地,一个完整的索引目录可分为搜索索引组和排序索引组,其中,搜索索引组是提供所有搜索字段子索引文件集合,假设SI1,SI2…SIm,这些索引文件主要目标是提供搜索字段,根据多个维度将数据字段划分到不同的索引文件中,维度包括搜索频率SearchQ,索引更新频率IndexQ等,然后将相似频率的字段放到一个索引文件中,提供搜索和索引更新的频率。可以理解的是,所述搜索索引组用于在步骤S11-步骤S15中进行数据搜索时采用,即应用服务器发送过来的搜索请求中可包括与所述搜索索引组中的搜索字段对应的一个或多个搜索字段等。
排序索引组提供搜索所需的排序字段子索引文件集合,排序子索引一般字段较少,严格按照字段顺序进行存储,为搜索结果提供排序依据,减少内存中排序计算环节,提高排序效率。但应注意的是,索引排序字段必须要求是可以排序的,比如按照时间可以严格有序,但有的搜索引擎更新索引的时候只能进行删除和添加操作,不能更新,而KeyId字段也是必须而且具有唯一性,以用于反向从索引文件里面读取内容。
作为一种具体实施方式,假设搜索索引组中只包括一个索引文件,搜索字段有两个SearchF1和SearchF2,排序字段有三个SortF1、SortF2、SortF3,且分别为点击率、更新时间和其他属性等;排序索引组有三个分别根据SortF1、SortF2、SortF3这三个排序字段建立的排序索引,当然搜索索引中也可以不存储排序索引,节省磁盘资源,那么如果输入关键词B去“或”搜索SearchF1和SearchF2时,同时先按点击率再按时间排序,具体流程如下:
(1)根据关键词B去搜索所有搜索字段得到4条结果,此时的搜索结果是无序的;
(2)联合查询第一个排序索引实现按照点击率排序;
(3)联合查询第二个排序索引按照更新时间排序,注意当点击率相同的时候才会按照更新时间排序,调用的先后关系决定了排序字段的权重;
(4)反向查询搜索索引文件找到对应的具体内容。
进一步地,基于对上述数据搜索方法的描述,如图7所示,本实施例还给出一种在应用重启时恢复已有的内存增量索引的步骤,具体结合步骤S16和步骤S17进行介绍。
步骤S15,获取数据库服务器中的待做索引表,基于该待做索引表获取在应用重启之前的预设时长内的数据更新列表,并根据所述数据更新列表创建新的内存增量索引;
步骤S16,判断在进行内存增量索引创建期间是否存在新的更新数据产生,若存在,则基于该更新数据对创建的内存增量索引进行更新。
其中,步骤S15-步骤S16中,在应用重启时,可首先从数据更新列表中获取应用重启前的预设时长内的更新数据源,比如启动时间为9点30分,则需要获取9:00~9:30之间的数据列表。
另外,在一个实施例中,若在进行内存增量索引创建时的创建时间覆盖了预设的内存增量索引的维护时间点,则删除已创建的内存增量索引,并进行新的内存增量索引的创建。原因是:在根据数据列表构建内存增量索引(RamIndex)时,构建的过程中会有新的更新数据产生,因此在第一次构建完后需要重新获取构建过程中这个时间段内需要更新的数据列表,进行第二次内存增量索引的更新。此外,如果跨时间段则需要新建一个内存增量索引,删除旧的内存增量索引,然后进入正常的索引维护流程。
进一步地,下面结合一个具体的实例对上述本发明实施例中给出的数据搜索方法进行举例说明。以工单实时搜索为例,工单搜索现在数据量为千万级别,全量索引在100g以上,每日更新数据3万左右,在此以工单内容查询为例。
(1)应用服务器获取工单的更新数据,并保存更新数据到数据库服务器,同时通过socket接口将更新数据推送到数据搜索服务器10;
(2)数据搜索服务器10将更新数据更新到内存增量索引中:每隔一个小时更新一次索引操作,并删除对应时间段中的内增量存索引。
(3)搜索工单标题及工单描述等多个字段,然后通过工单创建时间排序,实时搜索索引流程,其中,表2为排序索引模型采用上述的排序索引排序后的搜索结果。
表2
进一步地,如图8所示,为本实施例提供的一种应用于数据搜索服务器10的数据搜索装置100的方框结构示意图,该数据搜索装置100包括请求接收模块110、读取器调用模块120、数据搜索去重模块130、结果合并模块140和结果返回模块150。
所述请求接收模块110,用于接收应用服务器发送的数据搜索请求;本实施例中,关于所述请求接收模块110的描述具体可参考上述步骤S11的详细描述,也即,所述步骤S11可以由请求接收模块110执行,因而在此不作更多说明。
所述读取器调用模块120,用于根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;本实施例中,关于所述读取器调用模块120的描述具体可参考上述步骤S12的详细描述,也即,所述步骤S12可以由读取器调用模块120执行,因而在此不作更多说明。
所述数据搜索去重模块130,用于通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;本实施例中,关于所述数据搜索去重模块130的描述具体可参考上述步骤S13的详细描述,也即,所述步骤S13可以由数据搜索去重模块130执行,因而在此不作更多说明。
所述结果合并模块140,用于将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;本实施例中,关于所述结果合并模块140的描述具体可参考上述步骤S14的详细描述,也即,所述步骤S14可以由结果合并模块140执行,因而在此不作更多说明。
所述结果返回模块150,用于将所述搜索结果发送给所述应用服务器进行显示。本实施例中,关于所述结果返回模块150的描述具体可参考上述步骤S15的详细描述,也即,所述步骤S15可以由结果返回模块150执行,因而在此不作更多说明。
综上所述,本发明实施例提供的数据搜索方法和装置,其中,该数据搜索方式采用基于磁盘全量索引和内存增量索引的并行数据搜索方式,既能提高数据搜索效率,同时还能够实现对实时更新数据的搜索,保证数据搜索结果的实时性和准确性。
另外,本发明实施例中给出的数据搜索方法和装置中还采用排序索引的方式,可有效解决现有技术中存在的搜索时排序占用资源和效率低的问题。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的可选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据搜索方法,应用于数据搜索服务器,其特征在于,所述方法包括:
接收应用服务器发送的数据搜索请求;
根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;
通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并将通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;
将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;
将所述搜索结果发送给所述应用服务器进行显示。
2.根据权利要求1所述的数据搜索方法,其特征在于,将通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理的步骤包括:
获取用于保存删除数据的删除I D列表,并将该删除I D列表添加至所述第一索引读取器;
根据所述删除I D列表从所述第一索引读取器搜索到的数据信息中删除与该删除I D列表对应的数据信息。
3.根据权利要求1所述的数据搜索方法,其特征在于,所述方法还包括:
接收所述应用服务器发送的实时更新数据;
将所述实时更新数据写入待更新数据队列以使所述第二索引读取器读取该实时更新数据并将其更新到内存增量索引中;
判断所述内存增量索引是否满足新建条件,若满足,则删除当前内存增量索引,并进行新的内存增量索引的创建;
在完成新的内存增量索引的创建后对所述第二索引读取器进行更新。
4.根据权利要求1所述的数据搜索方法,其特征在于,判断所述内存增量索引是否满足新建条件的步骤包括:
判断当前时间点是否为所述内存增量索引的预设维护时间点;或者
判断所述内存增量索引中包含的索引数量是否达到预设值。
5.根据权利要求1所述的数据搜索方法,其特征在于,所述方法还包括:
按照预设时间间隔启动磁盘全量索引定时维护任务,并从数据库服务器中获取待做索引表和待更新数据列表;
根据所述待更新数据列表从所述数据库服务器中获取对应的待更新数据源;
将所述待更新数据源写入磁盘全量索引中,并将所述磁盘全量索引的写入结果写入所述待做索引表;
对所述第一索引读取器进行更新,并删除当前内存增量索引。
6.根据权利要求5所述的数据搜索方法,其特征在于,所述方法还包括:
根据所述待做索引表的写入结果判断是否存在写入异常的数据,若存在,则返回异常结果给所述应用服务器进行显示。
7.根据权利要求1所述的数据搜索方法,其特征在于,在进行应用重启后,所述方法还包括:
获取数据库服务器中的待做索引表,基于该待做索引表获取在应用重启之前的预设时长内的数据更新列表,并根据所述数据更新列表创建新的内存增量索引;
判断在进行内存增量索引创建期间是否存在新的更新数据产生,若存在,则基于该更新数据对创建的内存增量索引进行更新。
8.根据权利要求7所述的数据搜索方法,其特征在于,若在进行内存增量索引创建时的创建时间覆盖了预设的增量维护时间点,则删除已创建的内存增量索引,并进行新的内存增量索引的创建。
9.根据权利要求1所述的数据搜索方法,其特征在于,所述搜索服务器中预设有用于搜索结果排序的排序索引组,所述排序索引组中包括多个维度的排序规则;将所述搜索结果发送给所述应用服务器进行显示的步骤包括:
基于所述排序索引组中的排序规则对所述搜索结果进行排序,并将排序后的搜索结果发送给所述应用服务器进行显示。
10.一种数据搜索装置,应用于数据搜索服务器,其特征在于,所述装置包括:
请求接收模块,用于接收应用服务器发送的数据搜索请求;
读取器调用模块,用于根据所述数据搜索请求调用磁盘全量索引对应的第一索引读取器和内存增量索引对应的第二索引读取器;
数据搜索去重模块,用于通过所述第一索引读取器和所述第二索引读取器进行数据并行搜索,并对通过所述第一索引读取器基于所述磁盘全量索引搜索到的数据信息进行去重处理;
结果合并模块,用于将去重处理结果和通过所述第二索引读取器基于所述内存增量索引搜索到的数据信息进行合并作为搜索结果;
结果返回模块,用于将所述搜索结果发送给所述应用服务器进行显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681785.1A CN108846121A (zh) | 2018-06-27 | 2018-06-27 | 一种数据搜索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810681785.1A CN108846121A (zh) | 2018-06-27 | 2018-06-27 | 一种数据搜索方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108846121A true CN108846121A (zh) | 2018-11-20 |
Family
ID=64199934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810681785.1A Pending CN108846121A (zh) | 2018-06-27 | 2018-06-27 | 一种数据搜索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108846121A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309162A (zh) * | 2019-06-14 | 2019-10-08 | 福建天泉教育科技有限公司 | 一种es更新数据的优化方法及服务端 |
CN110502673A (zh) * | 2019-06-12 | 2019-11-26 | 广州虎牙科技有限公司 | 数据处理方法、服务器、以及具有存储功能的装置 |
CN112052367A (zh) * | 2020-07-23 | 2020-12-08 | 北京三快在线科技有限公司 | 一种搜索方法、装置、电子设备及存储介质 |
CN113158002A (zh) * | 2021-04-28 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 搜索方法、装置、电子设备和存储介质 |
CN116955286A (zh) * | 2023-09-19 | 2023-10-27 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、***及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294731A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 实时索引建立、实时搜索方法及装置 |
CN104123329A (zh) * | 2013-04-25 | 2014-10-29 | 北京千橡网景科技发展有限公司 | 搜索方法和装置 |
CN104536849A (zh) * | 2015-01-20 | 2015-04-22 | 成都携恩科技有限公司 | 一种基于云计算的数据备份方法 |
US20160147445A1 (en) * | 2014-11-25 | 2016-05-26 | Ivan Schreter | Transient and Persistent Representation of a Unified Table Metadata Graph |
CN106202552A (zh) * | 2016-07-27 | 2016-12-07 | 成都四象联创科技有限公司 | 基于云计算的数据搜索方法 |
CN106649870A (zh) * | 2017-01-03 | 2017-05-10 | 山东浪潮商用***有限公司 | 一种搜索引擎分布式实现方法 |
-
2018
- 2018-06-27 CN CN201810681785.1A patent/CN108846121A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103294731A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 实时索引建立、实时搜索方法及装置 |
CN104123329A (zh) * | 2013-04-25 | 2014-10-29 | 北京千橡网景科技发展有限公司 | 搜索方法和装置 |
US20160147445A1 (en) * | 2014-11-25 | 2016-05-26 | Ivan Schreter | Transient and Persistent Representation of a Unified Table Metadata Graph |
CN104536849A (zh) * | 2015-01-20 | 2015-04-22 | 成都携恩科技有限公司 | 一种基于云计算的数据备份方法 |
CN106202552A (zh) * | 2016-07-27 | 2016-12-07 | 成都四象联创科技有限公司 | 基于云计算的数据搜索方法 |
CN106649870A (zh) * | 2017-01-03 | 2017-05-10 | 山东浪潮商用***有限公司 | 一种搜索引擎分布式实现方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502673A (zh) * | 2019-06-12 | 2019-11-26 | 广州虎牙科技有限公司 | 数据处理方法、服务器、以及具有存储功能的装置 |
CN110309162A (zh) * | 2019-06-14 | 2019-10-08 | 福建天泉教育科技有限公司 | 一种es更新数据的优化方法及服务端 |
CN112052367A (zh) * | 2020-07-23 | 2020-12-08 | 北京三快在线科技有限公司 | 一种搜索方法、装置、电子设备及存储介质 |
CN113158002A (zh) * | 2021-04-28 | 2021-07-23 | 北京达佳互联信息技术有限公司 | 搜索方法、装置、电子设备和存储介质 |
CN116955286A (zh) * | 2023-09-19 | 2023-10-27 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、***及装置 |
CN116955286B (zh) * | 2023-09-19 | 2023-12-15 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、***及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846121A (zh) | 一种数据搜索方法和装置 | |
CN109857724B (zh) | 基于区块链实现支持多种数据库的方法及设备 | |
CN107169083A (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
CN108509437B (zh) | 一种ElasticSearch查询加速方法 | |
CN109684333A (zh) | 一种数据存储及裁剪方法、设备和存储介质 | |
CN101552976B (zh) | 多业务格式文件处理***及方法 | |
CN102193917A (zh) | 一种数据处理和查询方法和装置 | |
CN103345521A (zh) | 一种在哈希表数据库中处理键值的方法和装置 | |
CN103294786A (zh) | 一种分布式文件***的元数据组织管理方法和*** | |
CN107179930B (zh) | 一种应用卸载推荐方法及装置 | |
KR20150040980A (ko) | 중개 시스템에서 데이터 집계 | |
CN110543512B (zh) | 一种信息同步方法,装置及*** | |
CN111382155B (zh) | 一种数据仓库的数据处理方法、电子设备及介质 | |
CN109388636A (zh) | 业务数据***数据库方法、装置、计算机设备及存储介质 | |
CN102193995B (zh) | 一种建立多媒体数据索引、检索的方法及装置 | |
CN109376142A (zh) | 数据迁移方法及终端设备 | |
CN111784468B (zh) | 一种账户关联方法、装置及电子设备 | |
CN103064908A (zh) | 一种通过内存快速去重名单的方法 | |
CN110209736A (zh) | 区块链数据处理的装置、方法及存储介质 | |
CN106844497A (zh) | 一种数据库代码的检查装置和方法 | |
CN111046113B (zh) | 用于不同类型数据仓库的数据检索装置及方法 | |
CN113342839A (zh) | 数据处理方法、装置、终端设备和存储介质 | |
US11922222B1 (en) | Generating a modified component for a data intake and query system using an isolated execution environment image | |
CN110471764A (zh) | 一种内存清理的处理方法及装置 | |
CN106535161B (zh) | 智能终端进行智能拨号的方法、装置及智能终端 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181120 |