发明内容
本发明实施例的目的在于提供一种专利检索式的代码化方法、设备和存储介质。
为了实现上述目的,本发明采用以下技术方案:
第一方面,本发明提供了一种专利检索式的代码化方法,包括:
获取一专利检索式;所述专利检索式至少包括括号、字段名、逻辑运算符、操作符和文本;
通过解析Elasticsearch适用的布尔检索语句格式,确定抽象语法树的结构;
按照抽象语法树的结构将所述专利检索式生成抽象语法树,所述抽象语法树包括层级连接的多个节点,其中叶子节点存储字段名、文本和操作符,非叶子节点存储逻辑运算符,括号内的检索式所生成的节点位于括号外的检索式所生成的节点的下层;
按照深度优先的顺序遍历所述抽象语法树,将所述非叶子节点存储的逻辑运算符映射得到Elasticsearch适用的布尔逻辑运算符,将所述叶子节点存储的字段名、文本和操作符生成内部代码组,根据非叶子节点之间的级联关系,将所述布尔逻辑运算符生成代码嵌套格式;按照节点之间的级联关系,将内部代码组填充到代码嵌套格式中,得到布尔检索语句;
将所述布尔检索语句提供到Elasticsearch中进行检索;
其中,所述通过解析Elasticsearch适用的布尔检索语句格式,确定抽象语法树的结构,包括:
通过解析Elasticsearch适用的布尔检索语句格式,得到具有嵌套关系的布尔逻辑运算符类型、布尔逻辑运算符的内部代码组的字段名类型、操作符类型和文本类型;
根据具有嵌套关系的布尔逻辑运算符类型,确定所述抽象语法树中具有级联关系的非叶子节点需要存储逻辑运算符类型;以及,
根据布尔逻辑运算符的内部代码组的字段名类型、操作符类型和文本类型,确定抽象语法树中叶子节点需要存储字段名类型、操作符类型和文本类型。
第二方面,本发明实施例提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一实施例所述的专利检索式的代码化方法。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现任一实施例所述的专利检索式的代码化方法。
本实施例中,用户只需要输入包括括号、字段名、逻辑运算符、操作符和文本的常规专利检索式,即可以自动生成抽象语法树,并以抽象语法树为中介生成最终的布尔检索语句,进而自动通过Elasticsearch进行高效地检索。本实施例适用于复杂的、嵌套的检索式。虽然抽象语法树在代码领域比较常规,但本专利的创造性在于通过解析Elasticsearch适用的布尔检索语句格式,得到抽象语法树的结构,即确定抽象语法树中非叶子节点和叶子节点中存储的内容类型,从而在将专利检索式生成抽象语法树时,可以有针对性地将某类型的内容存储到节点中;而正是由于抽象语法树的结构是通过解析布尔检索语句格式得到,从而在得到抽象语法树后可以直接映射得到布尔检索语句,提高代码生成效率和成功率。需要说明的是,抽象语法树作为信息组织方式,实质作为专利检索式到布尔检索语句的桥梁,本专利的主要发明点为以抽象语法树为桥梁,根据复杂的、嵌套的专利检索式自动生成布尔检索语句。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
图1是本发明实施例提供的专利检索式的代码化方法的流程图,本实施例适用于通过专利检索式在Elasticsearch中进行检索的情况,该方法通过电子设备执行。
本实施例提供的方法包括以下操作:
S110、获取一专利检索式;所述专利检索式至少包括括号、字段名、逻辑运算符、操作符和文本。
专利检索式是输入至专利检索数据库中进行检索的算式,至少包括括号、字段名、逻辑运算符、操作符和文本。字段名包括题目(TI),摘要(ABST)等,逻辑运算符包括与(and),或(or)和非(not),操作符包括>、<、=、<=和>=。文本为具体的检索关键词,例如本申请中的“遍历”“抽象语法树”。用户可以根据检索需求构建专利检索式,例如TI=A and not(TI=B AND TI=C)and D。其中,A、B、C、D为文本。
S120、通过解析Elasticsearch适用的布尔检索语句格式,确定抽象语法树的结构。
通过解析Elasticsearch适用的布尔检索语句格式,得到具有嵌套关系的布尔逻辑运算符类型、布尔逻辑运算符的内部代码组的字段名类型、操作符类型和文本类型;根据具有嵌套关系的布尔逻辑运算符类型,确定所述抽象语法树中具有级联关系的非叶子节点需要存储逻辑运算符类型;以及,根据布尔逻辑运算符的内部代码组的字段名类型、操作符类型和文本类型,确定抽象语法树中叶子节点需要存储字段名类型、操作符类型和文本类型。
布尔检索语句中,类似常规的代码格式,布尔逻辑运算符must_not、must,should的嵌套关系采用不同的缩进和括号表示,一个布尔逻辑运算符下包括一组内部代码组,包括多行代码,包括字段名、操作符和文本。布尔逻辑运算符的嵌套关系与非叶子节点之间的级联关系一致,非叶子节点需要存储逻辑运算符类型,即and、or和not,叶子节点需要存储字段名类型、操作符类型和文本类型,各节点具体的级联关系和具体的存储内容则根据专利检索式确定,本步骤仅确定各节点需要存储的数据类型。
S130、按照抽象语法树的结构将所述专利检索式生成抽象语法树,所述抽象语法树包括层级连接的多个节点,其中叶子节点存储字段名、文本和操作符,非叶子节点存储逻辑运算符,括号内的检索式所生成的节点位于括号外的检索式所生成的节点的下层。
本实施例不限定将检索式生成抽象语法树的方法。嵌套的括号表达了层级关系,逻辑运算符表达了同层级的节点之间的关系,操作符所连接的字段名和文本存储至同一叶子节点中,叶子节点为全信息节点。逻辑运算符单独存储在一个非叶子节点中,非叶子节点只能存储一个逻辑运算符,为逻辑节点。
可选的,专利检索式按照从左到右的顺序进行逐字符遍历,并对遍历到的每个字符进行判断并按照预设的抽象语法树的逻辑生成抽象语法树;或者优先按照括号生成对应层级,再根据括号内的检索式生成叶子节点和非叶子节点,并在其中存储对应的信息。图2是本发明实施例提供的抽象语法树的结构示意图,对应检索式TI=A and not (TI=B ANDTI=C)and D。TI=A、TI=B、TI=C、D分别存储在叶子节点中,and、or、not存储在非叶子节点中,括号内的TI=B、and、TI=C所生成的节点位于括号外TI=A、not、D、and所生成的节点的下层。同一层级的节点之间的关系均用存储and的节点连接。
S140、按照深度优先的顺序遍历所述抽象语法树,将所述非叶子节点存储的逻辑运算符映射得到Elasticsearch适用的布尔逻辑运算符,将所述叶子节点存储的字段名、文本和操作符生成内部代码组,根据非叶子节点之间的级联关系,将所述布尔逻辑运算符生成代码嵌套格式;按照节点之间的级联关系,将内部代码组填充到代码嵌套格式中,得到布尔检索语句。
其中,not映射得到Elasticsearch适用的must_not,表示文档必须不符合其中所有的查询条件。and映射得到Elasticsearch适用的must,表示文档必须符合其中所有的查询条件。or映射得到Elasticsearch适用的should,表示文档必须符合其中任意一个及以上查询条件。
非叶子节点之间的级联关系即子节点与父节点之间的连接关系,以及节点的同层级关系。按照标准的代码格式,同层级的节点映射得到的布尔逻辑运算符具有相同的缩进;下层节点映射得到的布尔逻辑运算符的缩进大于上层节点映射得到的布尔逻辑运算符,且一叶子节点存储的字段名、文本和操作符生所生成的用花括号或中括号括起来。
按照Elasticsearch所要求的代码格式(例如等于号用match表示,其它不列举),将字段名、文本和操作符生成内部代码组,该叶子节点的父节点是谁,则将内部代码组填充到该父节点之下。示例性的,针对检索式TI=A and not (TI=B AND TI=C)and D,得到布尔检索语句如下:
"bool": {
"must": [
{
"match": {
"ti": "A" //本行及上一行代码为TI=A生成的内部代码组
}
},
{"match": {
"ti": "D"
}}
],
"must_not": [
{
"bool": {
"must": [
{
"match": {
"TI": "B"
}
},
{
"match": {
"TI": "C"
}
}
]
}
}
]
}
S150、将所述布尔检索语句提供到Elasticsearch中进行检索。
Elasticsearch执行布尔检索语句在专利数据库中进行检索。
本实施例中,用户只需要输入包括括号、字段名、逻辑运算符、操作符和文本的常规专利检索式,即可以自动生成抽象语法树,并以抽象语法树为中介生成最终的布尔检索语句,进而自动通过Elasticsearch进行高效地检索。本实施例适用于复杂的、嵌套的检索式。虽然抽象语法树在代码领域比较常规,但本专利的创造性在于通过解析Elasticsearch适用的布尔检索语句格式,得到抽象语法树的结构,即确定抽象语法树中非叶子节点和叶子节点中存储的内容类型,从而在将专利检索式生成抽象语法树时,可以有针对性地将某类型的内容存储到节点中;而正是由于抽象语法树的结构是通过解析布尔检索语句格式得到,从而在得到抽象语法树后可以直接映射得到布尔检索语句,提高代码生成效率和成功率。需要说明的是,抽象语法树作为信息组织方式,实质作为专利检索式到布尔检索语句的桥梁,本专利的主要发明点为以抽象语法树为桥梁,根据复杂的、嵌套的专利检索式自动生成布尔检索语句。在上述实施例和下述实施例中,用于生成抽象语法树的专利检索式是在用户输入的专利检索式的基础上经过字符替换的,以提高生成效率,避免不必要的重复判断。
具体的,将所述专利检索式中文本、逻辑运算符和操作符中的至少一项进行存储,并将所述专利检索式中文本、逻辑运算符和操作符中的至少一项替换为设定字符;设定字符为在专利检索式中不会出现的字符,例如$,以避免同字符多义的情况。将所述专利检索式生成抽象语法树,包括:遍历所述新的专利检索式中的每个字符,如果遍历到所述设定字符,提取已经存储的内容并写入对应的节点。例如将and替换为^,并存储and;后续如果遍历到^,则提取and写入对应的非叶子节点。
优选的,将所述专利检索式中的文本按照从左到右的顺序存储到第一数据队列中,将所述专利检索式中的逻辑运算符按照从左到右的顺序存储到第二数据队列中,将所述专利检索式中的操作符按照从左到右的顺序存储到第三数据队列中;将所述专利检索式中的文本统一替换为第一字符$,将逻辑运算符统一替换为第二字符^,将操作符统一替换为第三字符~。可选的,在专利检索式的最后添加结束符,例如+,以表示专利检索式结束。当然,也可以不加结束符,当遍历不到新的字符时,自动结束。例如,TI=A and not (TI=B ANDTI=C)and D经过字符替换,得到TI~$^^(TI~$^TI~$)^$+。
在后续遍历时,如果遍历到第一字符,按照先进先出的顺序从所述第一数据队列中提取文本写入对应的节点;如果遍历到第二字符,按照先进先出的顺序从所述第二数据队列中提取逻辑运算符写入对应的节点;如果遍历到第三字符,按照先进先出的顺序从所述第三数据队列中提取操作符写入对应的节点。已经提取过的内容不用存储在数据队列中,这样同一类型的内容可以替换为一个字符,按照先进先出的顺序从数据队列中提取对应的内容即可。
可选的,为了避免字符误识别。提高替换效率,在将所述专利检索式中文本、逻辑运算符和操作符中的至少一项进行存储之前,将专利检索式中文本、逻辑运算符和操作符进行规则化处理;规则化处理包括添加空格、统一格式和替换字符。
示例性的,将专利检索式中的中文双引号、英文单引号、英文双引号和中文单引号统一为英文双引号,这些引号中的一般是文本,则识别到英文双引号后,将英文双引号及其中的文本替换为第一字符,将文本存储到第一数据队列。将逻辑运算符的前后添加空格,防止被识别为文本。将通配符%替换为*(因为Elasticsearch中通配符用*表示),与通配符之前的文本进行合并,替换为一个第一字符,将通配符*与之前文本一起存储到第一数据队列。
在一可选实施方式中,详细介绍将所述专利检索式生成抽象语法树的过程。
第一步:创建抽象语法树的根节点root,并激活根节点;激活一节点也就是将指针指向该节点。
第二步:按照从左至右的顺序,遍历专利检索式中的每个字符,存在以下几种常规情况:
1)如果遍历到一个左括号,在当前激活节点下创建非叶子节点,并激活所述非叶子节点。同理,按照从左至右的顺序如果再遍历到一个左括号,继续按照本情况的逻辑操作。
2)如果遍历到逻辑运算符,且所述逻辑运算符与当前激活节点存储的逻辑运算符不一致,在当前激活节点下创建非叶子节点,并激活新创建的所述非叶子节点,在当前激活节点中写入所述逻辑运算符;如果当前激活节点没有存储逻辑运算符,在当前激活节点中写入所述逻辑运算符;这种情况仅适用于逻辑运算符为and或者or的情况。
3)如果遍历到操作符,则在当前激活节点下创建叶子节点,将操作符,所述操作符之前的字段名和之后的文本写入叶子节点。
具体的,如果遍历到字段名,将所述字段名暂存;在遍历到所述字段名后的操作符时,在当前激活节点下创建叶子节点,取出暂存的字段名与操作符一起写入当前创建的叶子节点;如果遍历到操作符后的文本,将所述文本暂存;在遍历到所述文本后的逻辑运算符、右括号或者结束符时,取出暂存的文本写入当前创建的叶子节点
暂存的意义在于,在从左到右逐字符遍历的过程中,并不知道字符何时结束,比如ADDR为地址,AD为申请日,遍历到前2位后,并不能确定字段名是否完整。只有后面遍历到操作符时,才能保证字段名的完整和准确。文本则同理。
4)如果遍历到一个右括号且当前激活节点未存储not,则激活当前激活节点的父节点以上层级节点中未存储not的最近邻节点,当前激活节点则取消激活;也就是将指针指向当前激活节点的父节点,如果父节点存储了not,则继续激活上一层节点,直到激活的节点不存储not。
需要说明的是,本专利中激活节点均是非叶子节点,且同时刻仅有一个激活节点。同理,按照从左至右的顺序如果再遍历到一个右括号,继续按照本情况的逻辑操作。
5)如果遍历到一个右括号且当前激活节点存储not,则激活当前激活节点的祖父及以上层级节点中未存储not的最近邻节点,当前激活节点则取消激活。遍历到右括号正常情况下应是激活节点上移一层,但是如果当前激活节点是not,则自动先上移一层,再响应于遍历到右括号,在上移一层。如果此时的激活节点仍然存储not,则继续上移,直到当前节点存储非not。
除了上述常规情况,还会存在几下几种特殊情况:
6)如果遍历到not,且在专利检索式中所述not左侧为and、or或者文本,则在当前激活节点下创建非叶子节点,并激活新创建的所述非叶子节点,在当前激活节点中写入所述not;
7)如果遍历到not,且在专利检索式中所述not左侧为not,则激活当前激活节点的父节点,当前激活节点则取消激活。
第三步:对于上述第4、5种情况,在激活当前激活节点的父节点以上层级节点中未存储not的最近邻节点,或者激活当前激活节点的祖父及以上层级节点中未存储not的最近邻节点的过程中,包括:如果新的激活节点与历史激活节点的层级之间存在未存储逻辑运算符的非叶子节点,则在该非叶子节点中写入and,保证所有的非叶子节点均存储了逻辑运算符。
值得说明的是,在专利检索式经过设定字符替换的情况下,如果遍历到设定字符(例如第一字符、第二字符和第三字符),先从对应的数据队列中提取内容,再执行判断、创建节点或者写入对应的节点中。
下面通过几个示例详细说明抽象语法树的创建过程。
1)针对专利检索式TI~$^^(TI~$^TI~$)^$+
首先,创建并激活根节点1,遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符=,在根节点1下创建叶子节点2,写入TI=。继续遍历到$,从第一数据队列中取出文本A进行暂存。遍历到^则从第二数据队列中取出逻辑运算符and,将文本A写入当前创建的叶子节点2。当前激活节点1没有存储逻辑运算符,则写入and。继续遍历到^则从第二数据队列中取出逻辑运算符not,且not左侧是and,则在当前激活节点1下创建非叶子节点3并激活,在非叶子节点3中写入not。继续遍历到左括号,在非叶子节点3下创建非叶子节点4并激活。继续遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符=,在非叶子节点4下创建叶子节点5,写入TI=。继续遍历到$,从第一数据队列中取出文本B进行暂存。遍历到^则从第二数据队列中取出逻辑运算符and,将文本B写入当前创建的叶子节点5。非叶子节点4没有存储逻辑运算符,写入and。继续遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符=,在非叶子节点4下创建叶子节点6,写入TI=。继续遍历到$,从第一数据队列中取出文本C进行暂存。遍历到右括号,将文本C写入叶子节点6;同时,非叶子节点4中存储的是and不是not,则激活非叶子节点3。由于非叶子节点3存储了not,则继续向上激活节点1。继续遍历到^则从第二数据队列中取出逻辑运算符and,and与当前激活节点1存储的逻辑运算符一致,则不执行任何操作。继续遍历到$则从第一数据队列中取出文本D进行暂存。继续遍历到结束符或者未遍历到字符,由于文本只能存储在叶子节点中,将在节点1下创建叶子节点7并写入文本D。还可以这样理解,文本D之前没有写字段名和操作符,其实是用户想在默认范围(例如说明书)内检索文本D。那么此处的D之前需要补充DESCR=,这样当遍历到~从第三数据队列中取出操作符=,同样也会在节点1下创建叶子节点7,并写入DESCR=D。最终形成的抽象语法树参见图2。
2)针对专利检索式((TI = A and TI<='B' and TI=C) or (TI<=D not TI=E))and pd="F",经过字符替换得到((TI~$^TI~$^TI~$)^(TI~$^TI~$))^pd~$+
首先,创建并激活根节点1并激活,遍历到左括号则创建非叶子节点2并激活,又遍历到左括号则继续在节点2下创建非叶子节点3并激活。遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符=,在节点3下创建叶子节点4,写入TI=。后续依次遍历到$^TI~$^TI~$,参见上述示例,在节点4中写入TI=A,节点3中写入and,在节点3下创建叶子节点5并写入TI<=B,在节点3下创建叶子节点6并写入TI=C。遍历到右括号,激活节点变为节点2,。继续遍历到^则从第二数据队列中取出逻辑运算符or,由于节点2未存储逻辑运算符,则写入or。继续遍历到左括号,在节点2下创建非叶子节点7并激活,继续遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符<=,在节点7下创建叶子节点8,写入TI<=。继续遍历到$从第一数据队列中取出D进行暂存,遍历到^则从第二数据队列中取出逻辑运算符not,将D写入叶子节点8。遍历到^则从第二数据队列中取出逻辑运算符not,其左侧为文本,则在节点7下创建非叶子节点9并激活,在节点9中写入not。继续遍历到TI进行暂存,遍历到~从第三数据队列中取出操作符=,在节点9下创建叶子节点10,写入TI=。继续遍历到$,从第一数据队列中取出文本E进行暂存。遍历到右括号且当前激活节点存储not,则激活祖父节点2,同时将文本E写入节点10。节点2与节点9的层级之间存储未存储逻辑运算符的节点7,则在节点7中写入and。继续遍历到右括号,则激活节点1,后续遍历到pd进行暂存。继续遍历到~从第三数据队列中取出操作符=,在节点1下创建叶子节点11,写入pd=。遍历到$,从第一数据队列中取出文本F进行暂存。后续没有符号或者为结束符+,则将文本F写入当前的非叶子节点。最终形成的抽象语法树参见图3。
图4为本发明实施例提供的一种电子设备的结构示意图,如图4所示,该设备包括处理器40、存储器41、输入装置42和输出装置43;设备中处理器40的数量可以是一个或多个,图4中以一个处理器40为例;设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的专利检索式的代码化方法对应的程序指令/模块处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的专利检索式的代码化方法。
存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例的专利检索式的代码化方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。