CN108153883B - 搜索方法和装置、计算机设备、程序产品以及存储介质 - Google Patents
搜索方法和装置、计算机设备、程序产品以及存储介质 Download PDFInfo
- Publication number
- CN108153883B CN108153883B CN201711435822.2A CN201711435822A CN108153883B CN 108153883 B CN108153883 B CN 108153883B CN 201711435822 A CN201711435822 A CN 201711435822A CN 108153883 B CN108153883 B CN 108153883B
- Authority
- CN
- China
- Prior art keywords
- node
- server
- nodes
- retrieval
- cache unit
- 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
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/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/211—Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提出一种搜索方法和装置、计算机设备、程序产品以及存储介质,其中,该方法通过从当前节点所在服务器中,查询处于当前节点下游的属于检索路径上的第一节点,当服务器中存储有第一节点时,直接从本地获取,而不必从第一节点所在的服务器上获取,即跨服务器获取第一节点,大大降低了跨服务器访问带来的开销,同时缩短了检索花费的时间,提高了检索效率,解决了相关技术中,跨服务器获取检索路径上的节点,存在的开销大、检索效率低的问题。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及一种搜索方法和装置、计算机设备、程序产品以及存储介质。
背景技术
目前,可基于实体与实体之间的关系进行检索,其中,实体以及实体之间的关系,可构成视图。当视图数据规模大到单个服务器无法承载时,相关技术中,通常是基于点切分或者边切分对视图进行分片,从而将视图中的所有节点(即实体)打散到各个分片,不同的分片存储到不同的服务器上,从而可以实现大规模视图的存储和检索。
基于切分后的视图进行搜索时,可以寻找到当前节点的下一级节点所在的服务器,然后按序检索出到最后的节点。由于所有节点被打散到多个服务器上,因此,在检索时需要跨服务器获取节点,有时可能会跨越多台服务器检索,这样会增加跨服务器访问的开销,检索花费的时间长,检索效率低。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种搜索方法,通过从当前节点所在服务器中,查询当前节点下游的属于检索路径上的节点,当服务器中存储有检索路径上的节点时,从本地直接获取,不必从节点所在的服务器获取,从而减少了跨服务器访问的开销,同时缩短了检索花费的时间,提高了检索效率。
本发明的第二个目的在于提出一种搜索装置。
本发明的第三个目的在于提出一种计算机设备。
本发明的第四个目的在于提出一种计算机程序产品。
本发明的第五个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种搜索方法,包括:
接收检索语句;
对所述检索语句进行分析,获取所述检索语句的检索路径;其中,所述检索路径上包括两个或者两个以上的节点和连接所述节点的边线;
从所述检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器;
根据所述当前节点所发出的所述边线,从所述服务器中查询处于所述当前节点下游的属于所述检索路径上的第一节点,并按照所述第一节点所发出的所述边线继续遍历;
判断所述服务器中遍历到的最后一个第一节点是否为所述检索路径中末端节点;
如果非所述末端节点,则将所述当前节点更新为所述第一节点的下一级节点并按照所发出的所述边线继续遍历,直到遍历到所述末端节点作为检索结果。
本发明实施例的搜索方法,通过从当前节点所在服务器中,查询处于当前节点下游的属于检索路径上的第一节点,当服务器中存储有第一节点时,直接从本地获取,而不必从第一节点所在的服务器上获取,即跨服务器获取第一节点,大大降低了跨服务器访问带来的开销,同时缩短了检索花费的时间,提高了检索效率,解决了相关技术中,跨服务器获取检索路径上的节点,存在的开销大、检索效率低的问题。
为达上述目的,本发明第二方面实施例提出了一种搜索装置,包括:
接收模块,用于接收检索语句;
获取模块,用于对所述检索语句进行分析,获取所述检索语句的检索路径;其中,所述检索路径上包括两个或者两个以上的节点和连接所述节点的边线;
确定模块,用于从所述检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器;
查询遍历模块,用于根据所述当前节点所发出的所述边线,从所述服务器中查询处于所述当前节点下游的属于所述检索路径上的第一节点,并按照所述第一节点所发出的所述边线继续遍历;
判断模块,用于判断所述服务器中遍历到的最后一个第一节点是否为所述检索路径中末端节点;
更新模块,用于如果非所述末端节点,则将所述当前节点更新为所述第一节点的下一级节点并按照所发出的所述边线继续遍历,直到遍历到所述末端节点作为检索结果。
本发明实施例的搜索装置,通过从当前节点所在服务器中,查询处于当前节点下游的属于检索路径上的第一节点,当服务器中存储有第一节点时,直接从本地获取,而不必从第一节点所在的服务器上获取,即跨服务器获取第一节点,大大降低了跨服务器访问带来的开销,同时缩短了检索花费的时间,提高了检索效率,解决了相关技术中,跨服务器获取检索路径上的节点,存在的开销大、检索效率低的问题。
为达上述目的,本发明第三方面实施例提出了一种计算机设备,包括处理器和存储器;
其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如第一方面实施例所述的搜索方法。
为了实现上述目的,本发明第四方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时实现如第一方面实施例所述的搜索方法。
为了实现上述目的,本发明第五方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面实施例所述的搜索方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例提供的一种搜索方法的流程示意图;
图2为本发明实施例提供的某服务器中包括的节点的示意图;
图3为本发明实施例提供的另一种搜索方法的流程示意图;
图4为本发明实施例提供的分片及节点之间的关系示意图;
图5为本发明实施例提供的一种搜索装置的结构示意图;
图6为适于用来实现本申请实施方式的示例性计算机设备的框图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的搜索方法和装置、计算机设备、程序产品以及存储介质。
当视图数据规模大到单个服务器无法承载时,相关技术中,通常是基于点切分或者边切分对视图进行分片,从而将视图中的所有节点(即实体)打散到各个分片,不同的分片存储到不同的服务器上,从而可以实现大规模视图的存储和检索。
基于切分后的视图进行搜索时,可以寻找到当前节点的下一级节点所在的服务器,然后按序检索出到最后的节点。由于所有节点被打散到多个服务器上,因此,在检索时需要跨服务器获取节点,有时可能会跨越多台服务器检索,这样会增加跨服务器访问的开销,检索效率降低。
针对这一问题,本发明实施例提出一种搜索方法,通过从当前节点所在服务器中,查询当前节点下游的属于检索路径上的第一节点,当服务器中存储有检索路径上的第一节点时,从本地直接获取,不必从第一节点所在的服务器获取,从而减少了跨服务器访问的开销,同时缩短了检索花费的时间,提高了检索效率。
图1为本发明实施例提供的一种搜索方法的流程示意图。
步骤101,接收检索语句。
由于图谱搜索能够支持更自然、复杂的查询输入,因此可在搜索引擎提供的输入框中输入检索语句,若某某妻子的文章。
步骤102,对检索语句进行分析,获取检索语句的检索路径;其中,检索路径上包括两个或者两个以上的节点和连接节点的边线。
在对检索语句进行分析时,作为一个示例,可将检索语句划分为多个分词,根据分词的词性和分词在检索语句中的顺序,确定节点以及连接节点的边线,得到检索路径。
其中,检索路径上包括两个或者两个以上的节点和连接节点的边线,这里的边线表示两个节点之间的关系。例如,某某妻子的文章,某某为检索路径的起始节点,妻子是由某某发出的边线,文章为某某的下一级节点。
步骤103,从检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器。
本实施例中,可预先存储节点与所在服务器之间的对应关系,根据正在遍历的当前节点,通过查询对应关系可确定正在遍历的当前节点所在的服务器。
步骤104,根据当前节点所发出的边线,从服务器中查询处于当前节点下游的属于检索路径上的第一节点,并按照第一节点所发出的边线继续遍历。
本实施例中,服务器中包括存储单元和缓存单元。其中,在对视图进行分割时,将划分到同一个服务器的节点存储在存储单元中,这些节点所在服务器为同一个服务器;缓存单元缓存的是划分到其他服务器的节点,也就是缓存所在服务器为其他服务器的节点。
如图2所示,图2中示出的是某服务器中包括的存储单元和缓存单元。其中,节点A、B、C的圆圈用实线表示,以表示存储在存储单元中;节点D、E、F的圆圈用虚线表示,以表示存储在缓存单元中。
根据当前节点所发出的边线,也就是根据当前节点与下一级节点之间的关系,从当前节点所在的服务器中查询处于当前节点下游的属于检索路径上的第一节点。
如果在服务器中查询到第一节点,可根据第一节点发出的边线,继续查询检索路径上当前第一节点的下一个节点,直到遍历到最后一个第一节点。具体地,可通过第一节点没有发出边线,或者第一节点发出边线,但通过边线查询到的第一节点不是检索路径上的节点,确定遍历到第一节点为最后一个第一节点。
以图2中某服务器中的节点为例,若检索路径为A→F,节点A为检索路径的第一个节点,根据节点A发出的边线,可在该服务器中查询到节点F,由于节点F没有发出边线,则F为在服务器中查询到的最后一个第一节点。
步骤105,判断服务器中遍历到的最后一个第一节点是否为检索路径中末端节点。
作为一种可能的实现方式,可将检索路径中末端节点的标识,与在服务器中遍历到的最后一个第一节点的标识进行比较。若两者的标识一致,可以确定服务器中遍历到的最后一个第一节点为检索路径中末端节点;若不一致,可以确定服务器中遍历到的最后一个第一节点不是检索路径中末端节点。
步骤106,如果非末端节点,则将当前节点更新为第一节点的下一级节点并按照所发出的边线继续遍历,直到遍历到末端节点作为检索结果。
如果在当前节点所在服务器中遍历到的最后一个第一节点不是检索路径中末端节点,这时需要从其他服务器中遍历最后一个第一节点的下一级节点。
具体地,将最后一个第一节点的下一级节点作为当前节点,可根据节点与所在服务器之间的对应关系,查询下一级节点所在的服务器,根据下一级节点发出的边线查询其缓存单元中下一级节点下游所属检索路径上的第一节点,并按照第一节点发出的边线继续遍历,继续执行步骤105和106,直到遍历到末端节点作为检索结果。
由于随着信息的更新,节点可能会发生更新,例如,某某妻子的文章,若某某的妻子已经发生了变化,则文章也会发生变化。在步骤104中,如果查询到的第一节点为缓存单元中的节点,按照第一节点所发出的边线继续遍历之前,可先判断节点是否发生更新,以保证检索结果的准确性。下面通过另一个实施例说明本发明提出的搜索方法。
如图3所示,该搜索方法包括:
步骤301,接收检索语句。
本实施例中,在接收检索语句之前,可对预先构建的视图进行切割,其中,视图是由两个以上的节点,以及节点之间的边线构成的。
由于视图可能会大于服务器的承载能力,因此对预先构建的视图进行切割。在切割时,可将一个或者多个节点以及边线作为一个分片,将视图分割为多个分片,并将不同的分片分配到不同的服务器上进行承载,以由多个服务器共同承载整个视图,这种横向扩展极大的提高了搜索引擎的承载能力。在将分片配到服务器时,将属于同一分片的节点存储到服务器的存储单元中。
以图4为例,假设视图分割后形成了两个分片,分别为分片1和分片2,可将分片1和分片2分别分配到服务器a和服务器b上进行承载。分片1分配到服务器a中,则将节点A、B、C存储在服务器a的存储单元中;分片2分配到服务器b中,将节点D、E、F、 G存储到服务器b的存储单元中。
步骤302,对检索语句进行分析,获取检索语句的检索路径;其中,检索路径上包括两个或者两个以上的节点和连接节点的边线。
步骤303,从检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器。
本实施例中,步骤302-步骤303与上述实施例中的步骤102-103记载的内容类型,在此不再赘述。
步骤304,根据当前节点所发出的边线,从服务器中查询处于当前节点下游的属于检索路径上的第一节点。
本实施例中,根据当前节点所发出的边线,也就是根据当前节点与下一级节点之间的关系,从当前节点所在的服务器中查询处于当前节点下游的属于检索路径上的第一节点。
步骤305,判断第一节点是否存储在缓存单元中。
本实施例中,可根据节点与所在服务器之间的对应关系,确定第一节点所在的服务器,若所在服务器为其他服务器,可以确定第一节点存储在缓存单元中;相反,存储在存储单元中。
步骤306,如果第一节点存储在缓存单元中,判断第一节点是否发生更新。如果未发生更新,则执行步骤307;否则,执行步骤308。
如果第一节点存储在缓存单元中,在从本地的缓存单元中获取第一节点之前,可先判断第一节点是否发生更新。
作为一种可能的实现方式,可由第一节点所在的服务器进行判断。具体地,获取第一节点缓存到当前节点所在服务器的缓存单元中的时间作为时间戳,以及第一节点的标识,利用时间戳和第一节点的标识,生成参数信息。然后,当前节点所在的服务器将第一节点的参数信息发送给第一节点所在的服务器。
第一节点所在的服务器接收到参数信息后,将接收到的参数信息与本地存储的参数信息进行比较,其中,本地存储的参数信息包括第一节点的更新时间和第一节点的标识。具体地,第一节点所在的服务器,将接收的参数信息中包括的第一节点的标识与本地存储的第一节点的标识进行比较,以及将接收的参数信息中包括的时间戳与本地存储的第一节点的更新时间进行比较。
若两个标识不一致,或者时间戳早于更新时间,表明在当前节点所在的服务器将第一节点缓存到缓存单元后,第一节点在其所在的服务器中发生了更新,可以确定两个参数信息不一致。若两个标识一致,且时间戳晚于更新时间,可以两个参数信息一致。
第一节点所在的服务器返回指示信息,其中,指示信息用于指示两个参数信息是否一致,是将两个参数信息比较后根据比较结果生成的。
如果指示信息指示出两个参数信息不一致,则确定第一节点发生更新;如果指示信息指示出两个参数信息一致,则确定第一节点未发生更新。
在服务器生成指示信息后,可以将指示信息反馈给搜索引擎,搜索引擎根据该指示信息可以确定出第一节点是否发生更新。
如图4所示,若第一节点为节点F,则利用服务器a将节点F缓存到缓存单元的时间和节点F的标识,生成参数信息,并发送给节点F所在的服务器b,由服务器b将接收的第一节点的参数信息,与服务器b本地存储的第一节点的参数信息进行比较,并根据比较结果生成指示信息,并返回指示信息。
作为另一种可能的实现方式,可由当前节点所在的服务器判断第一节点是否发生更新。具体而言,当前节点所在的服务器向第一节点所在的服务器发送参数信息请求,以获取第一节点的参数信息。
第一节点所在的服务器接收到参数信息请求后,将本地的第一节点的参数信息,如第一节点的更新时间、第一节点的标识等,将第一节点的参数信息发送给当前节点所在的服务器。
当前节点所在服务器接收到第一节点所在的服务器返回的参数信息后,将接收到的参数信息与自身缓存单元中存储的第一节点的参数信息进行比较,具体地的比较方法,可参见上述实施例,在此不再赘述。如果两个参数信息不一致,则确定第一节点发生更新;如果两个参数信息一致,则确定第一节点未发生更新。在服务器获取判断结果后,可以将判断结果反馈给搜索引擎,搜索引擎根据该指示信息可以确定出第一节点是否发生更新。
可以理解的是,如果第一节点存储在存储单元中,则执行步骤309,直接获取第一节点,并根据按照第一节点所发出的边线继续遍历。
步骤307,如果第一节点未发生更新,则从当前节点所在服务器内的缓存单元中获取第一节点。
如果第一节点未发生更新,可从当前节点所在服务器内的缓存单元中获取第一节点,而不必从第一节点所在的服务器中获取,从而不必跨服务器获取节点,减少了的开销。
步骤308,如果第一节点发生更新,则向第一节点所在的服务器发送请求,获取更新后的第一节点。
如果第一节点发生更新,向第一节点所在的服务器发送请求,以请求获取更新后的第一节点,从而提高了检索结果的准确性。
进一步地,为了保证当前节点所在服务器内的缓存单元中第一节点也进行相应更新,在获取更新后的第一节点后,将更新后的第一节点缓存到当前节点所在服务器内的缓存单元中,以替换更新前的第一节点,保证缓存单元中第一节点的实时更新。
步骤309,按照第一节点所发出的边线继续遍历。
在获取第一节点后,从第一节点发出的边线,继续在服务器中查询第一节点的下一级第一节点,直到遍历到最后一个第一节点。
步骤310,判断服务器中遍历到的最后一个第一节点是否为检索路径中末端节点。
本实施例中,对搜索语句进行分析时,可以确定出检索路径中包括节点和节点之间的边线,当第一节点为最后一个节点,该第一节点在检索路径中不再包括从第一节点出发的边线,即不会有指向下一个节点的关系。此时可以判断出该第一节点为最后一个节点,则判定第一节点为检索路径中末端节点。
步骤311,如果非末端节点,则将当前节点更新为第一节点的下一级节点并按照所发出的边线继续遍历,直到遍历到末端节点作为检索结果。
如果在当前节点所在服务器中遍历到的最后一个第一节点不是检索路径中末端节点,这时需要从其他服务器中遍历最后一个第一节点的下一级节点。
具体地,将最后一个第一节点的下一级节点作为当前节点,可根据节点与所在服务器之间的对应关系,查询下一级节点所在的服务器,根据下一级节点发出的边线查询其缓存单元中下一级节点下游所属检索路径上的第一节点,并按照第一节点发出的边线继续遍历,继续执行步骤105和106,直到遍历到末端节点作为检索结果。
以图4所示的分片1和分片2为例,若检索路径为A→F→G,节点A为第一个节点,在遍历到节点A时,根据节点A发出的边线,从节点A所在服务器中查询节点A下游的属于检索路径上的第一节点。根据节点A发出的边线,查询到节点F,且节点F为最后一个第一节点。经判断节点F不是检索路径末端节点,则将节点F的下一级节点G作为当前节点,通过查询节点与所在服务器之间的对应关系,确定节点G所在的服务器,即分片2 所在的服务器,并从服务器拉取节点G。进一步地,在从当前节点所在服务器中查询第一节点时,如果从服务器中未查询到第一节点,则获取当前节点的下一级节点,并将当前节点更新为下一级节点,确定当前节点所在的服务器,并从服务器拉取当前节点。
如图2所示,若检索路径为A→H,在节点A所在服务器中,根据节点A发出的边线查询不到节点H,则将节点H作为当前节点,根据节点与服务器之间的对应关系,查询节点H所在的服务器,从节点H所在的服务器拉取节点H。
更进一步地,当遍历到检索路径末端节点后,即一次检索结束后,可将所在服务器为其他服务器的节点缓存到一个服务器中的缓存单元中,本发明实施例提供了两种类型的存储方式。一种是将检索路径中的除第一个节点所在的服务器上包括的节点之外的其他节点,缓存到第一个节点所在的服务器内的缓存单元中;另一种是确定一个目标服务器,将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点缓存到目标服务器上的缓存内存中。
在缓存节点时,如果把节点缓存到一个服务器中,可能会无限制的将节点缓存到一个服务器中,势必会增加服务器的负担,因此上述两种类型存储方式中,均限定缓存单元可缓存的节点的总个数,并按照最近最少使用原则(Least Recently Used,简称LRS),动态更新缓存单元中的节点,既减轻了服务器的压力,又能实现将需要缓存的节点缓存到服务器中。
针对第一种类型的存储方式,将检索路径中的除第一个节点所在的服务器上包括的节点之外的其他节点,缓存到第一个节点所在的服务器内的缓存单元中,如图4所示,若检索路径为A→F→G,由于节点G不属于第一个节点A所在的服务器,可以将节点G缓存到第一个节点A所在的服务器的缓存单元中。本发明实施例提供了两种实现方式。
作为第一种实现方式,获取第一个节点所在服务器内的缓存单元,当前可缓存的节点的第一个数,获取除第一个节点之外的,以及检索路径上所在服务器与第一个节点所在服务器相同的节点之外的其他节点的第二个数。如果第二个数未超出第一个数,也就是说,缓存单元具有存储所有需要缓存的节点的能力,那么将其他节点存储到缓存单元中。
如果第二个数超出第一个数,则按照LRS原则从缓存单元中确定需要删除的已缓存节点,其中,删除的已缓存节点的个数为第一个数与第二个数的差值,在删除已缓存节点后,将其他节点存储到缓存单元中。也就是说,通过LRS删除已缓存节点,以使所有需要缓存的节点,均能够缓存到缓存单元中。
例如,可缓存的节点个数为20,而需要缓存的节点个数为28,可按照LRS原则删除已缓存的8个节点,以使缓存单元当前可缓存的节点个数与需要缓存的节点个数相同。
作为第二种实现方式,获取其他节点的第二个数,如果第二个数超出预设的阈值,则从其他节点中,按照每个节点在检索路径上的顺序,截取与阈值数量相等的节点,并获取截取出的节点的第三个数。可以理解的是,第三个数与阈值大小相当。
获取缓存单元当前可缓存的节点的第一个数,如果第三个数未超出第一个数,则将截取出的节点存储到缓存单元中。如果第三个数超出第一个数,则按照LRS原则从缓存单元中确定需要删除的已缓存节点,其中,删除的已缓存节点的个数为第一个数与第三个数的差值。
该实现方式中先将获取的其他节点个数与预设的阈值进行比较,当超过预设的阈值时,截取阈值数量的节点,也就是说,当需要缓存的数据量较多时,先通过截取阈值数量的节点,再将截取的节点的个数与缓存单元可缓存的节点个数比较,以确定是否使用LRS原则。
作为第二种类型的存储方式,将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点缓存到目标服务器上的缓存内存中。
具体地,当遍历到末端节点后,确定检索路径上每个节点所在的服务器上所包括的节点的第四个数。其中,第四个数是缓存单元中节点个数和所在服务器为当前服务器的节点。以图4中的分片1为例,服务器总 共有6个节点,即第四个数为6。
如果最大的第四个数超出预设的第二阈值,则将最大的第四个数对应的服务器作为目标服务器,将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点缓存到目标服务器上的所述缓存内存中。
在将最大的第四个数对应的服务器作为目标服务器之后,将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点,分配到目标服务器上,并修改其他节点所隶属的服务器。由此,在一次检索完成后,可将检索路径上的节点集中到目标服务器上,在下次进行相同检索路径的检索时,可从目标服务器上直接获取检索结果,从而不必跨越多个服务器获取检索结果,大大提高了检索效率。
如图4所示,假设视图被分为分片1和分片2,若检索路径为A→F→G,则确定节点 A所在服务器上包括的节点数量,节点F所在服务器上包括的节点数量,以及节点G所在服务器上包括的节点数量。从图中4可以看出,节点A所在的服务器a包括节点A、B、C、 D、E、F共6个节点,节点F与节点G所在服务器相同,包括节点D、E、F、G共4个节点。可见,最大的第四个数为6,那么服务器a为目标服务器,由于服务器a中已经包括检索路径上的节点A和节点F,那么将服务器a未包括的节点G缓存到服务器a中,并将节点G所隶属的服务器由服务器b更改为服务器a。
本发明实施例的搜索方法,通过从当前节点所在服务器中,查询处于当前节点下游的属于检索路径上的第一节点,当服务器中存储有第一节点时,直接从本地获取,而不必从第一节点所在的服务器上获取,即跨服务器获取第一节点,大大降低了跨服务器访问带来的开销,同时缩短了检索花费的时间,提高了检索效率,解决了相关技术中,跨服务器获取检索路径上的节点,存在的开销大、检索效率低的问题。
为了实现上述实施例,本发明还提出一种搜索装置。
如图5所示,该搜索装置包括:接收模块610、获取模块620、确定模块630、查询遍历模块640、判断模块650、更新模块660。
其中,接收模块610,用于接收检索语句。
获取模块620,用于对检索语句进行分析,获取检索语句的检索路径;其中,检索路径上包括两个或者两个以上的节点和连接节点的边线。
确定模块630,用于从检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器。
查询遍历模块640,用于根据当前节点所发出的边线,从服务器中查询处于当前节点下游的属于检索路径上的第一节点,并按照第一节点所发出的边线继续遍历。
判断模块650,用于判断服务器中遍历到的最后一个第一节点是否为检索路径中末端节点。
更新模块660,用于如果非末端节点,则将当前节点更新为第一节点的下一级节点并按照所发出的边线继续遍历,直到遍历到末端节点作为检索结果。
在本发明的一个实施例中,若第一节点存储在所述缓存单元中,该装置还可包括:
第一判断模块,用于在按照第一节点所发出的边线继续遍历之前,判断第一节点是否发生更新;
第一获取模块,用于如果第一节点发生更新,则向第一节点所在的服务器发送请求,获取更新后的第一节点。
在本发明的一个实施例中,第一判断模块可包括:
发送单元,用于将第一节点的参数信息发送给第一节点所在的服务器;
接收单元,用于接收服务器返回的指示信息;其中,指示信息是由服务器将接收到的参数信息与本地存储的参数信息进行比较后生成的;
如果指示信息指示出两个参数信息不一致,则确定第一节点发生更新;
如果指示信息指示出两个参数信息一致,则确定第一节点未发生更新。
在本发明的一个实施例中,第一判断模块还可包括:
获取单元,用于在将第一节点的参数信息发送给第一节点所在的服务器之前,获取第一节点缓存到缓存单元中的时间作为时间戳;获取第一节点的标识;
生成单元,用于利用时间戳和第一节点的标识,生成参数信息。
在本发明的一个实施例中,第一判断模块还用于:
向第一节点所在的服务器发送参数信息请求;
接收服务器返回的第一节点的参数信息;
将接收到的参数信息与缓存单元中存储的第一节点的参数信息进行比较;
如果两个参数信息不一致,则确定第一节点发生更新;
如果两个参数信息一致,则确定第一节点未发生更新。
在本发明的一个实施例中,该装置还可包括:
第一缓存模块,用于在获取更新后的第一节点之后,将更新后的第一节点缓存到缓存单元中。
在本发明的一个实施例中,判断模块650还用于:
判断最后一个第一节点是否具有从第一节点发出的边线;
如果不存在从第一节点发出的边线,则判定第一节点为检索路径中末端节点。
在本发明的一个实施例中,该装置还可包括:
第二获取模块,用于如果从缓存单元中未查询到第一节点,则获取当前节点的下一级节点;
拉取模块,用于将当前节点更新为下一级节点,确定当前节点所在的服务器,并从服务器拉取当前节点。
在本发明的一个实施例中,该装置还可包括:
第二缓存模块,还用于当遍历到末端节点后,将检索路径中的除第一个节点所在的服务器上包括的节点的其他节点,缓存到第一个节点所在的服务器内的缓存单元中。
在本发明的一个实施例中,第二缓存模块还用于:
获取所述缓存单元当前可缓存的节点的第一个数;
获取其他节点的第二个数;
如果第二个数未超出所述第一个数,则将其他节点存储到缓存单元中;
如果第二个数超出所述第一个数,则按照最近最少使用原则从缓存单元中确定需要删除的已缓存节点;其中删除的已缓存节点的个数为第一个数与第二个数的差值;
将其他节点存储到缓存单元中。
在本发明的一个实施例中,第二缓存模块还用于:
获取其他节点的第二个数;
如果第二个数超出预设的阈值,则从其他节点中,按照每个节点在检索路径上的顺序,截取与阈值数量相等的节点;
获取截取出的节点的第三个数;
获取缓存单元当前可缓存的节点的第一个数;
如果第三个数未超出第一个数,则将截取出的节点存储到缓存单元中;
如果第三个数超出第一个数,则按照最近最少使用原则从缓存单元中确定需要删除的已缓存节点;其中,删除的已缓存节点的个数为第一个数与第三个数的差值;
将截取出的节点存储到缓存单元中。
在本发明的一个实施例中,该装置还可包括:
第一确定模块,用于当遍历到末端节点后,确定检索路径上每个节点所在的服务器上所包括的节点的第四个数;
比较模块,用于如果最大的第四个数超出预设的第二阈值,则将最大的第四个数对应的服务器作为目标服务器;
第三缓存模块,用于将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点缓存到目标服务器上的缓存内存中。
在本发明的一个实施例中,该装置还可包括:
修改模块,用于在将最大的第四个数对应的服务器作为目标服务器之后,将除目标服务器上包括的检索路径上的节点之外的,属于检索路径上的其他节点,分配到目标服务器上,并修改节点所隶属的服务器。
在本发明的一个实施例中,该装置还可包括:
切割模块,用于在获取检索语句之前,对预先构建的视图进行切割,形成多个分片;其中,视图中至少包括检索路径上的节点和边线。
分配模块,用于将不同的分片分配到不同的服务器上进行承载。
需要说明的是,前述对搜索方法实施例的解释说明,也适用于该实施例的搜索装置,故在此不再赘述。
本发明实施例的搜索装置,通过从当前节点所在服务器中,查询处于当前节点下游的属于检索路径上的第一节点,当服务器中存储有第一节点时,直接从本地获取,而不必从第一节点所在的服务器上获取,即跨服务器获取第一节点,大大降低了跨服务器访问带来的开销,同时缩短了检索花费的时间,提高了检索效率,解决了相关技术中,跨服务器获取检索路径上的节点,存在的开销大、检索效率低的问题。
为了实现上述实施例,本发明还提出一种计算机设备,包括处理器和存储器;
其中,处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现如前述任一实施例所述的搜索方法。
图6示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图6显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称: VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI) 总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器 (Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12 可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等) 通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12 还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网) 通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。
为了实现上述实施例,本发明还提出一种计算机程序产品,当计算机程序产品中的指令由处理器执行时实现如前述任一实施例所述的搜索方法。
为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如前述任一实施例所述的搜索方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (30)
1.一种搜索方法,其特征在于,包括:
接收检索语句;
对所述检索语句进行分析,获取所述检索语句的检索路径;其中,所述检索路径上包括两个或者两个以上的节点和连接所述节点的边线;
从所述检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器;
根据所述当前节点所发出的所述边线,从所述服务器内查询处于所述当前节点下游的属于所述检索路径上的第一节点,并按照所述第一节点所发出的所述边线继续遍历;其中,所述服务器中包括存储单元和缓存单元,所述存储单元用于存储划分到同一个服务器的节点,所述缓存单元用于存储划分到其他服务器的节点;
判断所述服务器中遍历到的最后一个第一节点是否为所述检索路径中末端节点;
如果非所述末端节点,则将所述当前节点更新为所述第一节点的下一级节点并按照所发出的所述边线继续遍历,直到遍历到所述末端节点作为检索结果。
2.根据权利要求1所述的方法,其特征在于,若所述第一节点存储在所述缓存单元中,所述按照所述第一节点所发出的边线继续遍历之前,还包括:
判断所述第一节点是否发生更新;
如果所述第一节点发生更新,则向所述第一节点所在的服务器发送请求,获取更新后的所述第一节点。
3.根据权利要求2所述的方法,其特征在于,所述判断所述第一节点是否发生更新,包括:
将所述第一节点的参数信息发送给所述第一节点所在的所述服务器;
接收所述服务器返回的指示信息;其中,所述指示信息是由所述服务器将接收到的所述参数信息与本地存储的所述参数信息进行比较后生成的;
如果所述指示信息指示出两个所述参数信息不一致,则确定所述第一节点发生更新;
如果所述指示信息指示出两个所述参数信息一致,则确定所述第一节点未发生更新。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一节点的参数信息发送给所述第一节点所在的所述服务器之前,还包括:
获取所述第一节点缓存到所述缓存单元中的时间作为时间戳;
获取所述第一节点的标识;
利用所述时间戳和所述第一节点的标识,生成所述参数信息。
5.根据权利要求2所述的方法,其特征在于,所述判断所述第一节点是否发生更新,包括:
向所述第一节点所在的所述服务器发送参数信息请求;
接收所述服务器返回的所述第一节点的参数信息;
将接收到的所述参数信息与所述缓存单元中存储的所述第一节点的所述参数信息进行比较;
如果两个所述参数信息不一致,则确定所述第一节点发生更新;
如果两个所述参数信息一致,则确定所述第一节点未发生更新。
6.根据权利要求2所述的方法,其特征在于,所述获取更新后的所述第一节点之后,还包括:
将更新后的所述第一节点缓存到所述缓存单元中。
7.根据权利要求1所述的方法,其特征在于,所述判断所述服务器中遍历到的最后一个第一节点是否为所述检索路径中末端节点,包括:
将所述检索路径中末端节点的标识,与在所述服务器中遍历到的所述最后一个第一节点的标识进行比较,若两者的标识一致,则所述服务器遍历到的所述最后一个第一节点为所述检索路径中末端节点。
8.根据权利要求1所述的方法,其特征在于,还包括:
如果从所述服务器中未查询到所述第一节点,则获取所述当前节点的下一级节点;
将所述当前节点更新为所述下一级节点,确定所述当前节点所在的所述服务器,并从所述服务器拉取所述当前节点。
9.根据权利要求8所述的方法,其特在在于,还包括:
当遍历到所述末端节点后,将所述检索路径中的除所述第一个节点所在的所述服务器上包括的节点之外的其他节点,缓存到所述第一个节点所在的所述服务器内的所述缓存单元中。
10.根据权利要求9所述的方法,其特征在于,所述将所述检索路径中的除所述第一个节点所在的所述服务器上包括的节点之外的其他节点,缓存到所述第一个节点所在的所述服务器内的所述缓存单元中,包括:
获取所述缓存单元当前可缓存的节点的第一个数;
获取所述其他节点的第二个数;
如果所述第二个数未超出所述第一个数,则将所述其他节点存储到所述缓存单元中;
如果所述第二个数超出所述第一个数,则按照最近最少使用原则从所述缓存单元中确定需要删除的已缓存节点;其中,所述删除的已缓存节点的个数为所述第一个数与所述第二个数的差值;
将所述其他节点存储到所述缓存单元中。
11.根据权利要求9所述的方法,其特征在于,所述将所述检索路径中的除所述第一个节点所在的所述服务器上包括的节点之外的其他节点,缓存到所述第一个节点所在的所述服务器上的所述缓存单元中,包括:
获取所述其他节点的第二个数;
如果所述第二个数超出预设的阈值,则从所述其他节点中,按照每个节点在所述检索路径上的顺序,截取与所述阈值数量相等的所述节点;
获取截取出的所述节点的第三个数;
获取所述缓存单元当前可缓存的节点的第一个数;
如果所述第三个数未超出所述第一个数,则将截取出的所述节点存储到所述缓存单元中;
如果所述第三个数超出所述第一个数,则按照最近最少使用原则从所述缓存单元中确定需要删除的已缓存节点;其中,所述删除的已缓存节点的个数为所述第一个数与所述第三个数的差值;
将截取出的所述节点存储到所述缓存单元中。
12.根据权利要求8所述的方法,其特征在于,还包括:
当遍历到所述末端节点后,确定所述检索路径上每个节点所在的服务器上所包括的所述节点的第四个数;
如果最大的所述第四个数超出预设的第二阈值,则将最大的所述第四个数对应的所述服务器作为目标服务器;
将除所述目标服务器上包括的所述检索路径上的节点之外的,属于所述检索路径上的其他节点缓存到所述目标服务器上的所述缓存内存中。
13.根据权利要求12所述的方法,其特在在于,所述将最大的所述第四个数对应的所述服务器作为目标服务器之后,还包括:
将除所述目标服务器上包括的所述检索路径上的节点之外的,属于所述检索路径上的其他节点,分配到所述目标服务器上,并修改所述其他节点所隶属的服务器。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述获取检索语句之前,还包括:
对预先构建的视图进行切割,形成多个分片;其中,所述视图中至少包括所述检索路径上的节点和所述边线;
将不同的所述分片分配到不同的服务器上进行承载。
15.一种搜索装置,其特征在于,包括:
接收模块,用于接收检索语句;
获取模块,用于对所述检索语句进行分析,获取所述检索语句的检索路径;其中,所述检索路径上包括两个或者两个以上的节点和连接所述节点的边线;
确定模块,用于从所述检索路径上的第一个节点开始,确定正在遍历的当前节点所在的服务器;
查询遍历模块,用于根据所述当前节点所发出的所述边线,从所述服务器中查询处于所述当前节点下游的属于所述检索路径上的第一节点,并按照所述第一节点所发出的所述边线继续遍历,其中,所述服务器中包括存储单元和缓存单元,所述存储单元用于存储划分到同一个服务器的节点,所述缓存单元用于存储划分到其他服务器的节点;
判断模块,用于判断所述服务器中遍历到的最后一个第一节点是否为所述检索路径中末端节点;
更新模块,用于如果非所述末端节点,则将所述当前节点更新为所述第一节点的下一级节点并按照所发出的所述边线继续遍历,直到遍历到所述末端节点作为检索结果。
16.根据权利要求15所述的搜索装置,其特征在于,若所述第一节点存储在所述缓存单元中,所述搜索装置还包括:
第一判断模块,用于在按照所述第一节点所发出的边线继续遍历之前,判断所述第一节点是否发生更新;
第一获取模块,用于如果所述第一节点发生更新,则向所述第一节点所在的服务器发送请求,获取所述更新后的第一节点。
17.根据权利要求16所述的搜索装置,其特征在于,所述第一判断模块包括:
发送单元,用于将所述第一节点的参数信息发送给所述第一节点所在的所述服务器;
接收单元,用于接收所述服务器返回的指示信息;其中,所述指示信息是由所述服务器将接收到的所述参数信息与本地存储的所述参数信息进行比较后生成的;
如果所述指示信息指示出两个所述参数信息不一致,则确定所述第一节点发生更新;
如果所述指示信息指示出两个所述参数信息一致,则确定所述第一节点未发生更新。
18.根据权利要求17所述的搜索装置,其特征在于,所述第一判断模块还包括:
获取单元,用于在所述将所述第一节点的参数信息发送给所述第一节点所在的所述服务器之前,获取所述第一节点缓存到所述缓存单元中的时间作为时间戳,获取所述第一节点的标识;
生成单元,用于利用所述时间戳和所述第一节点的标识,生成所述参数信息。
19.根据权利要求16所述的搜索装置,其特征在于,所述第一判断模块还用于:
向所述第一节点所在的所述服务器发送参数信息请求;
接收所述服务器返回的所述第一节点的参数信息;
将接收到的所述参数信息与所述缓存单元中存储的所述第一节点的所述参数信息进行比较;
如果两个所述参数信息不一致,则确定所述第一节点发生更新;
如果两个所述参数信息一致,则确定所述第一节点未发生更新。
20.根据权利要求16所述的搜索装置,其特征在于,还包括:
第一缓存模块,用于在所述获取更新后的所述第一节点之后,将更新后的所述第一节点缓存到所述缓存单元中。
21.根据权利要求15所述的搜索装置,其特征在于,所述判断模块,包括:
将所述检索路径中末端节点的标识,与在所述服务器中遍历到的所述最后一个第一节点的标识进行比较,若两者的标识一致,则所述服务器遍历到的所述最后一个第一节点为所述检索路径中末端节。
22.根据权利要求15所述的搜索装置,其特征在于,还包括:
第二获取模块,用于如果从所述服务器中未查询到所述第一节点,则获取所述当前节点的下一级节点;
拉取模块,用于将所述当前节点更新为所述下一级节点,确定所述当前节点所在的所述服务器,并从所述服务器拉取所述当前节点。
23.根据权利要求22所述的搜索装置,其特征在于,还包括:
第二缓存模块,用于当遍历到所述末端节点后,将所述检索路径中的除所述第一个节点所在的所述服务器上包括的节点之外的其他节点,缓存到所述第一个节点所在的所述服务器内的所述缓存单元中。
24.根据权利要求23所述的搜索装置,其特征在于,所述第二缓存模块用于:
获取所述缓存单元当前可缓存的节点的第一个数;
获取所述其他节点的第二个数;
如果所述第二个数未超出所述第一个数,则将所述其他节点存储到所述缓存单元中;
如果所述第二个数超出所述第一个数,则按照最近最少使用原则从所述缓存单元中确定需要删除的已缓存节点;其中,所述删除的已缓存节点的个数为所述第一个数与所述第二个数的差值;
将所述其他节点存储到所述缓存单元中。
25.根据权利要求23所述的搜索装置,其特征在于,所述第二缓存模块用于:
获取所述其他节点的第二个数;
如果所述第二个数超出预设的阈值,则从所述其他节点中,按照每个节点在所述检索路径上的顺序,截取与所述阈值数量相等的所述节点;
获取截取出的所述节点的第三个数;
获取所述缓存单元当前可缓存的节点的第一个数;
如果所述第三个数未超出所述第一个数,则将截取出的所述节点存储到所述缓存单元中;
如果所述第三个数超出所述第一个数,则按照最近最少使用原则从所述缓存单元中确定需要删除的已缓存节点;其中,所述删除的已缓存节点的个数为所述第一个数与所述第三个数的差值;
将截取出的所述节点存储到所述缓存单元中。
26.根据权利要求22所述的搜索装置,其特征在于,还包括:
当遍历到所述末端节点后,确定所述检索路径上每个节点所在的服务器上所包括的所述节点的第四个数;
如果最大的所述第四个数超出预设的第二阈值,则将最大的所述第四个数对应的所述服务器作为目标服务器;
将除所述目标服务器上包括的所述检索路径上的节点之外的,属于所述检索路径上的其他节点缓存到所述目标服务器上的所述缓存内存中。
27.根据权利要求26所述的搜索装置,其特征在于,还包括:
修改模块,用于所述将最大的所述第四个数对应的所述服务器作为目标服务器之后,将除所述目标服务器上包括的所述检索路径上的节点之外的,属于所述检索路径上的其他节点,分配到所述目标服务器上,并修改所述其他节点所隶属的服务器。
28.根据权利要求15-27任一所述的搜索装置,其特征在于,还包括:
切割模块,用于在获取搜索语句之前,对预先构建的视图进行切割,形成多个分片;其中,所述视图中至少包括所述检索路径上的节点和所述边线;
分配模块,用于将不同的所述分片分配到不同的服务器上进行承载。
29.一种计算机设备,其特征在于,包括处理器和存储器;
其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现如权利要求1-14中任一所述的搜索方法。
30.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-14中任一所述的搜索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711435822.2A CN108153883B (zh) | 2017-12-26 | 2017-12-26 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711435822.2A CN108153883B (zh) | 2017-12-26 | 2017-12-26 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153883A CN108153883A (zh) | 2018-06-12 |
CN108153883B true CN108153883B (zh) | 2022-02-18 |
Family
ID=62462953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711435822.2A Active CN108153883B (zh) | 2017-12-26 | 2017-12-26 | 搜索方法和装置、计算机设备、程序产品以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153883B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110659312B (zh) * | 2019-08-01 | 2022-08-23 | 北京百度网讯科技有限公司 | 数据处理的方法、装置、设备和计算机存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488137A (zh) * | 2008-01-14 | 2009-07-22 | 深圳三石科技有限公司 | 基于热点缓存的搜索方法 |
CN101785008A (zh) * | 2007-08-29 | 2010-07-21 | 微软公司 | 用于本地和远程服务的聚集搜索结果 |
CN102193979A (zh) * | 2011-03-25 | 2011-09-21 | 北京世纪互联工程技术服务有限公司 | 图形数据库非联机事务中查询数据的控制方法 |
CN102332009A (zh) * | 2011-09-02 | 2012-01-25 | 北京大学 | 一种大规模数据集上的关系查询方法 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN103020096A (zh) * | 2011-09-22 | 2013-04-03 | 富士施乐株式会社 | 检索装置和检索方法 |
CN103984745A (zh) * | 2014-05-23 | 2014-08-13 | 何震宇 | 分布式视频垂直搜索方法及系统 |
CN104504003A (zh) * | 2014-12-09 | 2015-04-08 | 北京航空航天大学 | 图数据的搜索方法和装置 |
CN104812015A (zh) * | 2015-05-14 | 2015-07-29 | 江苏大学 | 一种面向物联网数据的分布式Top-k查询方法 |
CN105468941A (zh) * | 2015-12-30 | 2016-04-06 | 杭州华为数字技术有限公司 | 一种权限控制方法和装置 |
CN106569963A (zh) * | 2016-10-25 | 2017-04-19 | 乐视控股(北京)有限公司 | 缓存方法和装置 |
CN106570319A (zh) * | 2016-10-31 | 2017-04-19 | 北京科技大学 | 一种确定中医诊断模式的方法及装置 |
CN107463671A (zh) * | 2017-08-03 | 2017-12-12 | 北京大学 | 路径查询的方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505262B (zh) * | 2008-02-05 | 2011-07-20 | 华为技术有限公司 | 一种构造节点Id的方法和装置 |
US20140143110A1 (en) * | 2012-11-20 | 2014-05-22 | Sap Ag | Circular Transaction Path Detection |
US9367607B2 (en) * | 2012-12-31 | 2016-06-14 | Facebook, Inc. | Natural-language rendering of structured search queries |
-
2017
- 2017-12-26 CN CN201711435822.2A patent/CN108153883B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101785008A (zh) * | 2007-08-29 | 2010-07-21 | 微软公司 | 用于本地和远程服务的聚集搜索结果 |
CN101488137A (zh) * | 2008-01-14 | 2009-07-22 | 深圳三石科技有限公司 | 基于热点缓存的搜索方法 |
CN102541875A (zh) * | 2010-12-16 | 2012-07-04 | 北京大学 | 有向无环图的关系型节点数据的存取方法、装置及系统 |
CN102193979A (zh) * | 2011-03-25 | 2011-09-21 | 北京世纪互联工程技术服务有限公司 | 图形数据库非联机事务中查询数据的控制方法 |
CN102332009A (zh) * | 2011-09-02 | 2012-01-25 | 北京大学 | 一种大规模数据集上的关系查询方法 |
CN103020096A (zh) * | 2011-09-22 | 2013-04-03 | 富士施乐株式会社 | 检索装置和检索方法 |
CN103984745A (zh) * | 2014-05-23 | 2014-08-13 | 何震宇 | 分布式视频垂直搜索方法及系统 |
CN104504003A (zh) * | 2014-12-09 | 2015-04-08 | 北京航空航天大学 | 图数据的搜索方法和装置 |
CN104812015A (zh) * | 2015-05-14 | 2015-07-29 | 江苏大学 | 一种面向物联网数据的分布式Top-k查询方法 |
CN105468941A (zh) * | 2015-12-30 | 2016-04-06 | 杭州华为数字技术有限公司 | 一种权限控制方法和装置 |
CN106569963A (zh) * | 2016-10-25 | 2017-04-19 | 乐视控股(北京)有限公司 | 缓存方法和装置 |
CN106570319A (zh) * | 2016-10-31 | 2017-04-19 | 北京科技大学 | 一种确定中医诊断模式的方法及装置 |
CN107463671A (zh) * | 2017-08-03 | 2017-12-12 | 北京大学 | 路径查询的方法和装置 |
Non-Patent Citations (1)
Title |
---|
互联网环境下分布式网络延迟测量技术研究;符永铨;《中国博士学位论文全文数据库 信息科技辑》;20141015;I139-9 * |
Also Published As
Publication number | Publication date |
---|---|
CN108153883A (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
CN111247518B (zh) | 用于数据库分片的方法和系统 | |
US9020991B2 (en) | System and method for analyzing available space in data blocks | |
US20120330907A1 (en) | Storage system for eliminating duplicated data | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
CN103635887B (zh) | 缓存数据的方法和存储系统 | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN106951179B (zh) | 一种数据迁移方法及装置 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN109033360B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
KR20200003164A (ko) | 데이터베이스 동기화 | |
CN110765076A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN104572845A (zh) | 文件分发方法、装置、设备及系统 | |
CN105468644B (zh) | 一种用于在数据库中进行查询的方法与设备 | |
CN111831618A (zh) | 数据写入方法、数据读取方法、装置、设备及存储介质 | |
CN109460345B (zh) | 实时数据的计算方法及系统 | |
US20080071992A1 (en) | Method and Apparatus for Space Efficient Identification of Candidate Objects for Eviction from a Large Cache | |
CN111813756A (zh) | 一种日志检索系统、方法、装置、电子设备及存储介质 | |
CN110245129B (zh) | 一种分布式全局数据去重方法和装置 | |
CN107181773A (zh) | 分布式存储系统的数据存储及数据管理方法、设备 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN108153883B (zh) | 搜索方法和装置、计算机设备、程序产品以及存储介质 | |
CN101459599B (zh) | 一种实现缓存数据访问与加载并发进行的方法及系统 | |
US11250001B2 (en) | Accurate partition sizing for memory efficient reduction operations |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |