首页> 中国专利> 结构化文档管理系统和管理在所述系统中的索引的方法

结构化文档管理系统和管理在所述系统中的索引的方法

摘要

根据索引产生请求(其是从外部发送的,用于指导字符串连接索引的产生的,并且其指定被分配到所产生的字符串连接索引的标签),标签检测单元(52a)在文档存储区域(421)中新存储或者已经存储的结构化文档中检测由所述索引产生请求指定的标签。索引管理单元(54)产生被分配到所检测的标签的字符串连接索引,并且在索引存储区域(422)中存储所产生的字符串连接索引。所产生的字符串连接索引包括被连接的多个文本节点的值。所述文本节点被包括在具有所检测的标签的结构化文档中,并且依赖于所检测的标签。

著录项

  • 公开/公告号CN101136033A

    专利类型发明专利

  • 公开/公告日2008-03-05

    原文格式PDF

  • 申请/专利号CN200710147754.X

  • 发明设计人 山田晃智;谷川均;藤本克文;

    申请日2007-08-28

  • 分类号G06F17/30(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人杨晓光;李峥

  • 地址 日本东京都

  • 入库时间 2023-12-17 19:49:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-11-18

    授权

    授权

  • 2008-04-30

    实质审查的生效

    实质审查的生效

  • 2008-03-05

    公开

    公开

说明书

技术领域

本发明涉及一种结构化文档管理系统,具体地涉及适合于管理用于搜索结构化文档的索引的结构化文档管理系统,和管理在所述系统中的索引的方法。

背景技术

以可扩展标记语言(XML)形式表示的文档被称为XML文档。在由XML文档表示的结构化文档中,通过被称为标签的串来表达分层结构。具体上,通过以几个标签(即几个开始标签和结束标签)围绕文本来结构化文本。从开始标签到结束标签的串被称为包括标签的元素。由开始标签和结束标签围绕的串被称为元素的内容。结构化文档(XML文档)可以被表达为树结构。在所述结构化文档的树结构中,对应于结构化文档的元素的节点被称为元素节点。如果元素的内容(值)是文本,则对应于元素的内容的节点被称为文本节点。所述文本节点由文本单独构成。换句话说,文本节点、文本节点的值和文本彼此等同。

用于管理多个结构化文档并且执行大规模搜索处理的系统被称为结构化文档管理系统。在数据库服务器上运行的数据库管理系统(DBMS)被称为典型的结构化文档管理系统。在所述结构化文档管理系统中,应用一种通过使用索引(索引数据)来改善搜索速度的方法,如例如在下文中所公开:JP-A 2000-207409(KOKAI)和JP-A 2006-172268(KOKAI)。所述索引用于使用在结构化文档中的数据(值)来加速搜索速度。

在结构化文档管理系统中,经常以元素节点为单位来搜索结构化文档。因此,一般以元素节点为单位来分配索引。于是,将例示以元素节点为单位的索引分配。首先,采用包括下述数据(其中以XML形式描述了日本地址)的结构化文档。。

<address>

 <prefecture>Tokyo</prefecture>

 <municipality>Fuchu-shi Musashidai</municipality>

 <number>1-1-15</number>

</address>

为了搜索这样的结构化文档,使用第一条件[address contains“TokyoFuchu-shi”(地址包含“Tokyo Fuchu-shi”)]。“Tokyo Fuchu-shi”是以罗马字母表达的日语标题,并且对应于字母标题“Fuchu-shi,Tokyo”。“Fuchu-shi”的“shi”对应于英文词“municipality”。

客户端向结构化文档管理系统发出用于在第一条件下搜索的搜索请求。这个搜索请求包括作为搜索字符串(查询)的例如“/address[prefecture/text()=“Tokyo”and contains (municipality/text(),“Fuchu-shi”)]”。为了加速这样的查询的XML文档搜索,索引被产生和分配到分别由路径[/address/prefecture]和路径[/address/municipality]指定的元素节点(<prefecture>标签和<municipality>标签)。

但是,当旨在加速使用以元素节点为单位产生的索引而进行的XML文档搜索时,在所述<地址(address)>标签中的自由度有限。例如分别以在图4A和图4B中所示的DOCUMENT#1和DOCUMENT#2来说明在标签的自由度上的限制。

DOCUMENT#1:

<address>

 <prefecture>Tokyo</prefecture>

 <municipality>Fuchu-shi Musashidai</municipality>

 <number>1-1-15</number>

</address>

DOCUMENT #2:

<address>

 <prefecture>Tokyo</prefecture>

 <ward>Minato-ku</ward>

 <municipality>Shibaura</municipality>

 <number>1-1-1</number>

</address>

采取在使用对于DOCUMENT #1和DOCUMENT #2产生的索引进行的XML文档搜索中除了<municipality>标签之外还使用<ward>标签。具体上,在第二条件[address contains“Tokyo Minato-ku Shibaura”(地址包含“Tokyo Minato-ku Shibaura”)]下进行搜索。“Tokyo Minato-kuShibaura”是以罗马字母表达的日语标题,并且对应于字母标题“Shibaura,Minato-ku,Tokyo”。“Minato-ku”的“ku”对应于英文词汇“ward”。

对于在第二条件下的搜索,例如,需要使用诸如“/address[prefecture/text()=“Tokyo”and ward/text()=“Minato-ku”and contains(municipality/text(),“Shibaura”)]”的查询。在这种情况下,难于使用用于在第一条件下的搜索的查询。换句话说,对于在第二条件下的搜索,不仅需要重写条件值,而且需要重写查询。

另一方面,可以通过以用于指定XML文档的分层结构的、被称为XPath的路径形式描述“/address[contains(.,“Tokyo Minato-kuShibaura”)]”来进行期望的搜索。但是,按照以元素节点为单位产生索引的传统技术,因为不存在对应的索引,因此需要搜索每个XML文档的内容,并且确认所述文件是否满足条件。由于这个原因,难于执行高速搜索。

当通过使用以元素节点为单位产生的索引而进行搜索时,需要执行AND(与)合并处理。在上述的示例中,在AND条件下,AND合并处理合并,所述AND条件是在单个文档中是否包含使用被分配到<省>标签的索引的命中的结果、使用被分配到<市>标签的索引的命中的结果和使用被分配到<行政区>标签的索引的命中的结果。在通过使用任何一个索引或者全部索引的搜索而命中大量的数据元素的情况下,所述AND合并处理可能影响搜索的高速性能。

发明内容

本发明的目的是实现适合于使用多个标签值的搜索加速的索引管理。

按照本发明的一个实施例,提供了一种结构化文档管理系统。这个系统包括结构化文档数据库、标签检测单元和索引管理单元。所述结构化文档数据库包括:结构化文档存储区域,其中,存储了多个结构化文档;索引存储区域,其中存储了索引。所述索引用于搜索在结构化文档存储区域中存储的结构化文档。所述标签检测单元被配置来按照索引产生请求来从结构化文档检测由所述索引产生请求指定的标签,所述索引产生请求是从结构化文档管理系统的外部发送的,用于指导字符串连(concatenation)接索引的产生,并且所述索引产生请求指定被分配所产生的字符串连接索引的标签,所述结构化文档被刚刚存储或者已经被存储在所述结构化文档存储区域中。所述索引管理单元被配置来产生被分配到由所述标签检测单元检测的标签的字符串连接索引,并且在索引存储区域中存储所产生的字符串连接索引。所述字符串连接索引包括连接的多个文本节点的值。所述文本节点被包括在具有所检测的标签的结构化文档中,并且依赖于所检测的标签。

附图说明

被并入说明书和构成说明书的一部分的附图图解了本发明的实施例,并且与上述的一般说明和下述的实施例的详细说明一起用于说明本发明的原理。

图1是示出按照本发明的一个实施例的、包含结构化文档管理系统的客户机服务器系统的硬件配置的方框图;

图2是示出在图1中所示的结构化文档管理系统的主要功能的方框图;

图3是示出在所述实施例中的索引设置处理的步骤的流程图;

图4A和图4B是示出XML文档的示例的图示;

图5是示出在图4A和图4B中所示的XML文档的树结构的图示;

图6A是被应用到所述实施例的索引设置管理表;

图6B是被应用到所述实施例的第一修改示例的索引设置管理表;

图7是示出在所述实施例中的文档存储处理的步骤的流程图;

图8是示出被分配到在图5的树结构中所示的两个文档中的路径“/address”的索引与所述树结构的关联的图示;

图9是示出在所述实施例中产生的索引数据阵列的数据结构的图示;

图10是示出在所述实施例中的文件搜索处理的步骤的流程图;

图11是示出被应用到所述实施例的索引产生模型的图示;

图12是示出被应用到所述实施例的第一修改示例的索引产生模型的图示;

图13是示出在第一修改示例中被分配到在图5的树结构中所示的两个文档中的路径“/address”的索引与所述树结构的关联的图示;

图14是示出在树结构中的、被应用到所述实施例的第二修改示例的XML文档的示例的图示;

图15是示出在第二修改示例中产生的索引数据阵列的数据结构的图示;

图16是示出在第二修改示例中的索引搜索处理的步骤的流程图;

图17是具有树结构的、被应用到所述实施例的第三修改示例的XML文档的示例的图示;

图18是示出在第三修改示例中在索引产生期间执行类型转换处理的步骤的流程图。

具体实施方式

下面参见附图来说明本发明的一个实施例。图1是示出按照本发明的一个实施例的、包含结构化文档管理系统的客户机-服务器系统的硬件配置的方框图。所述客户机-服务器系统主要包括数据库服务器(数据库服务器计算机)10和多个客户端。所述客户端包含客户端20。在客户端20中,运行使用数据库服务器10的应用(应用程序)。包含客户端20的客户端经由诸如局域网(LAN)的网络30而连接到数据库服务器10。在图1中省略了除了客户端20之外的客户端。

数据库服务器10连接到诸如硬盘驱动器的外部存储器40。外部存储器40存储数据库管理程序41和XML数据库42。

数据库管理程序41用于通过数据库服务器10来管理XML数据库42,并且用于基于来自客户端的搜索请求进行搜索处理。XML数据库42是结构化文档数据库,其被配置来存储作为结构化文档的XML文档(XML文档数据)。在XML数据库42中,也存储了根据在XML数据库42中存储的XML文档而产生的索引。

在本实施例中,通过数据库服务器10和外部存储器40来实现结构化文档管理系统50。图2是示出结构化文档管理系统50的主要功能的方框图。结构化文档管理系统50除了XML数据库42之外还包括命令管理单元51、文档管理单元52、文档搜索单元53、索引管理单元54和数据库操作单元55。在本实施例中,通过由在图1中所示的数据库服务器读取和执行在外部存储器40中存储的数据库管理程序41来实现单元51-55的每个。程序41可以被预先存储在计算机可读存储介质中,并且被分发。可以经由网络30向数据库服务器10下载所述程序41。

在XML数据库42中,保留了XML文档存储区域421、索引存储区域422和索引设置管理表(ISMT)存储区域423。在XML文档存储区域421中,存储了多个XML文档(XML文档数据)。在索引存储区域422中,存储了根据要被新存储在XML文档存储区域421中或者已经被存储在XML文档存储区域421中的XML文档而产生的索引。在ISMT存储区域423中,存储了索引设置管理表(ISMT)424。ISMT 424用于管理要在索引存储区域422中存储的索引的产生。

命令管理单元51经由网络30接受从客户端提供的命令(请求),并且确定命令的类型。按照命令类型的确定结果,命令管理单元51使得文档管理单元52、文档搜索单元53和索引管理单元54的任何一个执行由所述命令指定的处理。

文档管理单元52执行在XML数据库42的XML文档存储区域421中的XML文档的管理(XML文档管理)。所述XML文档管理包括在XML文档存储区域421中存储XML文档的处理。文档管理单元52包括标签检测单元52a。所述标签检测单元52a从在XML文档存储区域421中存储的XML文档检测包括标签的元素(元素节点),该标签通过后述的索引设置信息中的设置路径指定。

文档搜索单元53是所谓的文档搜索引擎,用于在XML文档存储区域421中搜索满足由搜索请求指定的搜索条件的XML文档。文档搜索单元53使用在XML数据库42的索引存储区域422中存储的索引来用于XML文档搜索。索引管理单元54执行索引的管理(索引管理)。所述索引用于搜索在XML文档存储区域421中存储的XML文档。所述索引管理包括索引的产生和在索引存储区域422中存储所产生的索引。索引管理单元54包括索引搜索单元56,其搜索在索引存储区域422中存储的索引。可以独立于索引管理单元54而提供索引搜索单元56。数据库操作单元55用作接口,其允许文档管理单元52、文档搜索单元53和索引管理单元54访问XML数据库42。

接着,依序说明本实施例的操作的(1)索引设置处理,(2)文档存储处理和(3)文档搜索处理。

(1)索引设置处理

首先,参见图3的流程图来说明索引设置处理。

假定在客户端20上运行用于通过客户端20使用结构化文档管理系统50的应用程序。在这个状态中,用户需要在结构化文档管理系统50中搜索包括多个文本节点的XML文档。用户操作客户端20以指定节点(标签),在所述节点(标签)中,分别包含作为元素内容的多个文本节点的值的元素节点依赖于作为指定节点的下层节点的指定节点。然后,用户操作客户端20来使得客户端20发出索引产生请求。所述索引产生请求指令在XML文档(XML文档的分层结构或者树结构)上依赖于被指定的节点(指定节点)来连接例如所有文本节点的值(文本),并且产生索引(字符串连接索引)。在分层结构或树结构上,依赖于指定节点的文本节点指示出能够从指定节点沿着底层的方向的文本节点(即在比指定节点低的层存在的文本节点)。所述指定节点指示一个节点,其变为基于文本连接的索引产生的原点,并且对于其设置(分配)所产生的索引。

客户端20根据上述的用户操作,经由网络30向数据库服务器10发出包括关于指定节点的信息的索引产生请求(索引产生命令)(步骤S1)。所述索引产生请求由数据库服务器10(结构化文档管理系统50)的命令管理单元51接收。在本实施例中,通过从在XML文档的分层结构上的路由节点到指定节点的路径(结构信息)来表示指定节点。

当命令管理单元51从客户端20接收到索引产生请求(即由用户从外部指定的索引产生请求)时,命令管理单元51分析所述请求。根据所述请求(命令的)分析结果,命令管理单元51从文档管理单元52、文档搜索单元53和索引管理单元54选择用于处理所述请求的功能单元。命令管理单元51在此根据对所述请求的分析结果选择索引管理单元54来作为用于处理所述索引产生请求的功能单元。命令管理单元51向索引管理单元54发送来自客户端20的索引产生请求(步骤S2)。

根据从命令管理单元51发送的索引产生请求,索引管理单元54产生新的索引产生所需要的索引设置信息,并且在ISMT424增加所述索引设置信息(步骤S3)。所述索引设置信息指示一个信息,当由所述索引产生请求指示的索引被产生时,所述信息被引用。后面将说明所述信息的细节。在步骤S3中,索引管理单元54向命令管理单元51返回对于索引产生请求的响应(例如索引产生的正常终止的通知)。如果ISMT424的拷贝被存储在数据库服务器10的存储器(未示出)中并且在所述拷贝上执行对所述索引设置信息的添加和引用,则可以加速对于ISMT424的访问。

命令管理单元51经由网络30向客户端20返回来自索引管理单元54的响应(步骤S4)。换句话说,在索引产生请求的逆向路径上,从索引管理单元54向客户端20返回对于索引产生请求的响应。

图4A和图4B分别示出了已经被存储在XML文档存储区域421或者要被新存储在XML文档存储区域421中的XML文档#1和#2。图5示出了在树结构中表达的、分别在图4A和图4B中所示的XML文档#1和#2。在图5中,被表示为“root(根)”的节点500是XML文档#1和#2的根节点。根节点的子节点(即紧接在根节点之下的节点)是元素节点510和520,该元素节点510和520对应于包括XML文档#1和#2的<地址>标签的元素(即其名称是“address(地址)”的元素)。元素节点510和520也被称为地址节点510和520。在图5中,以椭圆来表示根节点和元素节点,并且以矩形来表示文本节点。

节点510的子节点是分别对应于包括XML文档#1的<省(prefecture)>标签、<市(municipality)>标签和<号码>标签的元素的元素节点511、512和513。所述元素节点511、512和513也分别被称为省节点511、市节点512和号码节点513。节点520的子节点是元素节点521、522、523和524,其分别对应于包括XML文档#2的<省>标签、<行政区(ward)>标签、<市>标签和<号码>标签的元素。所述元素节点521、522、523和524也分别被称为省节点521、行政区节点522、市节点523和号码节点524。

节点511、512和513的子节点是分别对应于文本“Tokyo”、“Fuchu-shiMusashidai”和“1-1-15”的文本节点511T、512T和513T。文本“Tokyo”、“Fuchu-shi Musashidai”和“1-1-15”是分别包括<省>标签、<市>标签和<号码>标签的元素的内容(值)。节点521、522、523和524的子节点是分别对应于文本“Tokyo”、“Minato-ku”、“Shibaura”和“1-1-1”的文本节点521T、522T、523T和524T。文本“Tokyo”、“Minato-ku”、“Shibaura”和“1-1-1”是分别包括<省>标签、<行政区>标签、<市>标签和<号码>标签的元素的内容。

在本实施例中,由索引产生请求指定的节点(指定节点)是对应于包括<地址>标签的元素的元素节点510和520。从根节点到元素节点510和520的路径被表达为“/address(地址)”。在路径“/address”中包括的“/”表示在诸如上述示例(位于路径的开始部分的情况)的情况下的根节点。在下面的说明中,例如,通过省略路径原点(根节点),将“从根节点到节点A的路径”表达为“到节点A的路径”。

图6A示出了在到指定节点(由索引产生请求指定的节点)的路径是“/address”的情况下,在由索引管理单元54增加索引设置信息后的ISMT424的一个示例。ISMT424的每个项目的信息(索引设置信息)包括关于设置路径和索引类型的信息,如图6A中所示。在ISMT424中存储索引设置信息,其包括作为设置路径的到指定节点的路径“/address”,并且包括作为索引类型的“字符串连接索引”。在本实施例中,“字符串连接索引”表示通过以出现顺序连接依赖于指定节点(标签)的多个文本节点的值(文本)而产生的索引。指定节点是由在索引设置信息中与“字符串连接索引”成对的路径指定的节点。在本实施例中,在存储XML文档期间产生由在ISMT424中输入的索引设置信息表示的类型(在索引设置信息中的索引类型)的索引,如下所述。

(2)文件存储处理

接着,将参见图7的流程图来说明文档存储处理。按照客户端20的用户操作,客户端20向数据库服务器10发出文档存储请求(文档存储命令)来指令XML文档被新存储(步骤S11)。所述存储请求被数据库服务器10(结构化文档管理系统50)的命令管理单元51接收。

当命令管理单元51从客户端20接收到文档存储请求时,命令管理单元51分析所述请求。根据所述请求(命令)分析的结果,命令管理单元51选择文档管理单元52作为功能单元来处理所述请求。命令管理单元51向所选择的文档管理单元52发送客户端20的文档存储请求(步骤S12)。

按照从命令管理单元51发送的文档存储请求,文档管理单元52以从XML文档的开始部分起的顺序来分析(解析)由所述请求指定的要新存储的XML文档(步骤S13)。此时,在文档管理单元52中的标签检测单元52a执行用于检测元素(元素节点)的处理,所述元素(元素节点)包括由在ISMT424中输入的索引设置信息中的设置路径指定的标签。

标签检测单元52a首先确定所分析的信息是否是由所述设置路径指定的元素,即为该元素(指定元素)指定了要分配(设置)的索引(步骤S14)。如果所分析的信息是被指定了要分配(设置)的索引的元素(指定元素)(步骤S14)的信息(开始标签、文本或者结束标签),则标签检测单元52a从包括到指定元素的路径的信息的索引设置信息提取索引类型信息(步骤S15)。在步骤S15中,标签检测单元52a确定所提取的索引类型信息是否表示“字符串连接索引”。

如果索引类型信息不表示“字符串连接索引”(步骤S15),则标签检测单元52a使得文档管理单元52对于所分析的信息执行一般处理(即与传统处理相同的处理)。另一方面,如果索引类型信息指示“字符串连接索引”(步骤S15),则标签检测单元52a确定所分析的信息的类型(步骤S16)。换句话说,标签检测单元52a确定所分析的信息是否是开始标签(指定元素的开始标签)、文本或者结束标签(指定元素的结束标签)。

如果所分析的信息是开始标签,即如果标签检测单元52a检测到开始标签,则文档管理单元52开始字符串连接(步骤S17)。如果所分析的信息是文本,即如果标签检测单元52a新检测到文本,则文档管理单元52执行处理,以将新检测的文本(字符串)与在数据库服务器10的存储器上保留的字符串连接区域中已经检测的一个或多个文本(一个或多个字符串)连接为新的字符串(步骤S18)。如果所分析的信息是结束标签,即如果标签检测单元52a检测到结束标签,则文档管理单元52激活索引管理单元54。然后,索引管理单元54产生由在字符串连接区域中连接的字符串构成的索引(字符串连接索引)(步骤S19)。

因此,在本实施例中,当存储包括由客户端20的索引产生请求指定的节点(标签)的XML文档时,根据包括到被指定的节点(指定节点)的路径的信息的索引设置信息,来产生被分配到XML文档的指定节点(路径)的索引(字符串连接索引)。根据索引设置信息产生索引等同于根据作为用于产生索引设置信息的触发器的索引产生请求而产生索引。但是,可以通过应用在本实施例中所述的根据索引设置信息来产生索引的方式来加速索引的产生。如果来自客户端20的索引产生请求被预先存储,则在每次存储新的XML文档时分析索引产生请求,并且根据分析结果产生索引,不像本实施例那样,所述索引产生的加速是困难的。

对于已经在XML文档存储区域421中存储的XML文档(例如由用户指定并且在其中存储的XML文档),可以产生文档的指定节点(路径)的索引。换句话说,也可能按照用户操作通过客户端20来指定在数据库服务器10(结构化文档管理系统50)中存储的XML文档,并且产生要分配到指定的XML文档的指定节点(路径)的索引。

如果执行了步骤S17、S18或者S19,则文档管理单元52执行步骤S20。在步骤S14中确定所分析的信息不是在被指定索引产生的元素中的信息的情况下,文档管理单元52也执行步骤S20。在步骤S20,文档管理单元52执行文档存储处理,用于在XML数据库42的XML文档存储区域421中存储所分析的信息。

当文档管理单元52执行步骤S20时,文档管理单元52确定是否已经结束了由来自客户端20的文档存储请求指定的XML文档的存储(步骤S21)。如果指定的XML文档的存储还没有结束,则文档管理单元52返回到步骤S14。在步骤S14中,文档管理单元52确定在指定的XML文档中的下一个被分析信息是否是在为其指定了索引产生的元素中的信息。

其后,文档管理单元52以出现的顺序连接在以下时间段出现的所有字符串(文本),该时间段是从被指定(检测)索引产生的元素中的开始标签被指定直到该元素的结束标签被指定(检测)的时段期间(步骤S18)。如果在被指定索引产生的元素中的结束标签被确定(步骤S16),则由索引管理单元54产生基于在所述确定之前连接的字符串的索引(步骤S19)。换句话说,被连接的字符串被产生为字符串连接索引(字符串连接索引数据)。在步骤S19中,索引管理单元54在索引存储区域422中存储所产生的字符串连接索引。所述字符串连接索引被作为被分配到由索引产生请求指定的节点(元素节点)的索引而进行管理。例如,B树或者混编可以作为索引形式被应用,但是也可以使用其他形式。也可以通过索引管理单元54来执行连接字符串(文本)的处理(步骤S18)。

当结束存储指定的XML文档的处理时(步骤S21),文档管理单元52向命令管理单元51返回对于文档存储请求的响应(例如通知存储文档的正常结束)(步骤S22)。命令管理单元51经由网络30向客户端20返回来自文档管理单元52的响应(步骤S23)。换句话说,以与文件存储请求相反的路径,从文档管理单元52向客户端20返回对于文件存储请求的响应。

根据用于指定在图6A的ISMT424中输入的“path=/address”和“indextype=character string concatenation”的索引设置信息,图8与树结构相关联地示出了被分配到在图5中的树结构中表示的文档#1和文档#2(比较图4A和图4B)的路径“/address”的索引(字符串连接索引)。在图8中,其元素名称是由文档#1的路径“/address”指定的“address”的元素节点是地址节点(<地址>标签)510。依赖于地址节点510的文本节点是文本节点511T、512T和513T。文本节点511T、512T和513T的值(文本)是“Tokyo”、“Fuchu-shi Musashidai”和“1-1-15”。在这种情况下,通过连接所有的文本(字符串)而获得的索引(字符串连接索引)530被产生为被分配到文档#1的路径“/address”(地址节点510)的索引(索引数据),如图8中所示。所述索引(索引数据)包括被分配了所述索引的地址节点510的位置信息,如下所述。

类似地,其元素名称是由文档#2的路径“/address”指定的“address”的元素节点是地址节点(<地址>标签)520。依赖于地址节点520的文本节点是文本节点521T、522T、523T和524T。文本节点521T、522T、523T和524T的值(文本)是“Tokyo”、“Minato-ku”、“Shibaura”和“1-1-1”。在这种情况下,通过连接所有文本(字符串)而获得的索引(字符串连接索引)540被产生作为被分配到文档#2的路径“/address”(地址节点520)的索引(索引数据),如图8中所示。所述索引(索引数据)包括该索引被分配到的地址节点520的位置信息,如下所述。

图9示出了在所产生的字符串连接索引的索引存储区域422中的阵列(索引数据阵列)的数据结构的示例。在图9中所示的索引数据阵列中的每个索引包含节点位置、省节点(prefecture node)的子节点(紧邻省节点的下面的节点)的值(文本)、行政区(ward)节点的子节点的值、市(municipality)节点的子节点的值和号码节点的子节点的值。

所述节点位置信息指示在XML文档存储区域421中存储的对应的XML文档中的节点存储位置,更具体地,所述节点位置信息指示由在ISMT424中输入的索引设置信息中的路径指定的节点(标签)的存储位置,诸如XML文档存储区域421中的相对存储位置。

以在对应的XML文档中的出现顺序来连接在索引中的节点的值(文本)。在本实施例中,以省节点的子节点、行政区节点的子节点、市节点的子节点和号码节点的子节点的顺序来连接在索引中的节点的值。但是,在文档#1中,以省节点的子节点、市节点的子节点和号码节点的子节点的顺序来连接在索引中的节点的值,因为行政区节点的子节点没有值。

(3)文件搜索处理

接着,将参见图10来说明文档搜索处理。

按照客户端20的用户操作,当前从客户端20发出用于引导数据库服务器10搜索XML文档的搜索请求(步骤S31)。所述搜索请求包含搜索字符串(查询,搜索条件)。换句话说,所述搜索请求指定搜索字符串。由数据库服务器10(结构化文档管理系统50)的命令管理单元51接收所述搜索请求。    

当命令管理单元51从客户端20接收到所述搜索请求时,命令管理单元51分析所述请求。根据所述请求的分析结果,命令管理单元51选择文档搜索单元53作为用于处理所述请求的功能单元。命令管理单元51向所选择的文档搜索单元53发送来自客户端20的搜索请求(步骤S32)。

文档搜索单元53分析由从命令管理单元51发送的搜索请求指出的搜索字符串(查询,搜索条件)(步骤S33)。根据对搜索字符串的分析的结果,文档搜索单元53根据被分配了字符串连接索引的元素节点(标签)确定由所述搜索字符串指示的数据的搜索是否是使用文本节点的值的搜索(步骤S34)。如果确定所述搜索请求满足这个条件,则文档搜索单元53请求在索引管理单元54中的索引搜索单元56搜索被分配到对应的元素节点的索引(字符串连接索引)。然后,索引搜索单元56在索引存储区域422中搜索所请求的字符串连接索引(步骤S35)。如果所述搜索请求不满足所述条件,则文档搜索单元53执行一般的搜索处理(步骤S36)。

当文档搜索单元53请求索引搜索单元56搜索字符串连接索引时,从索引搜索单元56向文档搜索单元53返回搜索结果。当文档搜索单元53从索引搜索单元56获得字符串连接索引的搜索结果时,操作转移到步骤S37。在步骤S37,文档搜索单元53通过使用所搜索(获得)的字符串连接索引来搜索包括被分配字符串连接索引的标签的XML文档,并且获得搜索的结果(XML文档搜索结果)。根据在字符串连接索引中包括的节点位置信息,在XML文档存储区域421中搜索包括由所述节点位置信息表示的节点(标签)的XML文档。命令管理单元51接收由文档搜索单元53获得的XML文档搜索结果,并且向客户端20返回搜索结果(步骤S38)。

按照被应用到本实施例的产生字符串连接索引的方式,从产生原理显然得到:对应于AND合并处理的处理等同于已经在产生字符串连接索引时执行的处理。当如上所述在现有技术中在XML文档的终端以元素节点为单元产生索引时,所述AND合并处理用于确认在同一文档中是否包括命中了(hit with)被分配到所述终端的元素节点的索引的结果。当已经在字符串连接索引产生时执行了对应于AND合并处理的处理时,通过使用在本实施例中执行的由索引搜索单元56搜索的字符串连接索引而搜索XML文档,不需要AND合并处理。由于这个原因,可以通过使用字符串连接索引来加速所述搜索,其中所述搜索使用依赖于已经被分配字符串连接索引的元素节点(标签)的文本节点的值来作为条件,并且即使在多个命中数量的情况下也可以防止性能的变差。

将说明使用字符串连接索引的XML文档搜索的具体示例。作为由所述搜索请求表示的查询,使用“/address[包含(.,“Tokyo Minato-kuShibaura”)]”。在这种情况下,在图9的索引数据阵列的示例中,由索引搜索单元56获得包括“Tokyo Minato-ku Shibaura”的字符串连接索引“Tokyo Minato-ku Shibaura 1-1-1”和文档#2的地址节点(地址标签)的位置(即在XML文档存储区域421中的位置)。

通过以其出现的顺序连接依赖于文档#2的地址节点520的所有的文本节点521-524的值(文本)而产生所述字符串连接索引“Tokyo Minato-kuShibaura 1-1-1”。因此,文档#2的地址节点(地址标签)的位置指定了XML文档(文档#2)“地址包括“Tokyo Minato-ku Shibaura””的地址节点(地址标签)。文档搜索单元53可以从所述地址节点的位置搜索XML文档(文档#2)  “地址包含“Tokyo Minato-ku Shibaura””。

如上所述,通过连接依赖于在XML文档中的指定节点的所有文本节点的值(文本),产生被分配到指定节点的索引(字符串连接索引)。图11示出了索引产生的模型。在图11中,A、B、C、D、E和X表示在以树结构表示XML文档的情况下的元素节点(标签),并且字符串“aa”、“bb”、“cc”、“dd”和“ee”表示元素节点D、D、D、E和X的元素(文本节点)的值。在圆圈中的元素节点A是被分配了字符串连接索引的节点(指定节点)。在图11的示例中,通过连接依赖于节点A的所有的文本(字符串)“aa”、“bb”、“cc”、“dd”和“ee”,产生被分配到元素节点A的字符串连接索引(元素节点A的字符串连接索引)。

[第一修改示例]

将说明上述实施例的第一修改示例。在该实施例中,连接依赖于指定节点(标签)的所有文本节点(值)。但是,当一些文本节点被用作搜索条件时,可以对于所述文本节点加索引。在这种情况下,因为可以减少索引的量,因此由索引存储区域422占用的外部存储器40的存储区域减少,并且可以预期搜索的加速。因此,第一修改示例的特性是连接依赖于目的地节点的一些文本节点,并且产生文本节点的索引。

图12示出了被应用到第一修改示例的关于索引产生的模型。图12示出了与图11相同的树结构。在图12的示例中,通过连接字符串“aa”、“bb”和“cc”而产生元素节点(标签)A的索引(字符串连接索引),所述字符串“aa”、“bb”和“cc”是在元素节点D、D、D、E和X中的、在矩形中的三个元素节点D、D和D的元素(文本节点)的值。

在第一修改示例中,从客户端20向结构化文档管理系统50发送与被应用到上述实施例的不同的索引产生请求,以产生字符串连接索引。除了到表示指定节点(标签)的元素节点A的路径(设置路径)之外,被应用到第一修改示例的索引产生请求还在依赖于所述指定节点(标签)所有文本节点中指定要加索引(连接)的文本节点。通过到要加索引的文本节点的父节点的相对路径(被连接的路径),从所述指定节点指定要加索引的文本节点。

在图12的示例中,响应于索引产生请求,到元素节点A的路径被指定为设置路径,并且自元素节点A的相对路径“B/C/D”被指定为被连接的路径。当索引管理单元54接收到所述索引产生请求时,索引管理单元54确定在依赖于节点A的所有文本节点中,在由来自节点A的相对路径“B/C/D”(低一层)表示的三个节点D、D和D的最近邻的下面的文本节点被指定为要加索引(连接)的文本节点。索引管理单元54响应于在ISMT424中的索引产生请求而输入索引设置信息(图3的步骤S3)。

在第一修改示例中,可以指定最多要连接的两个路径,因此,在第一修改示例中在ISMT424输入的索引设置信息除了在图6中所示的设置路径和索引类型的信息之外,还包括两个被连接路径#1和#2的信息。在其中“B/C/D”被指定为被连接路径的上述示例中,将到指定节点A的路径和“字符串连接索引”分别用作在索引设置信息中包括的设置路径和索引类型。另外,例如,将“B/C/D”用作被连接路径#1。

如果在索引设置信息中包括的索引类型是字符串连接索引,则文档管理单元52可以连接与由被连接路径#1(即自节点A的相对路径“B/C/D”)表示的节点紧邻的下面的文本节点的值(文本),依赖于节点A的所有的文本节点被在索引设置信息中包括的设置路径指定。对于在第一修改示例中的连接的顺序,与由被连接路径#1表示的节点紧邻的下面的文本节点具有优先级,并且与由被连接路径#1表示的节点紧邻的下面的文本节点具有第二优先级。如果由单个被连接路径#i(i=1,2)来表示多个节点,则连接与所述节点紧邻的下面的文本节点的顺序是它们出现的顺序。

接着,假定,通过所述索引产生请求,除了元素节点D最近邻的下面的文本节点之外,元素节点E最近邻的下面的文本节点被指定为要加索引的文本节点。在这种情况下,由索引管理单元54在ISMT424中输入包括作为设置路径的到指定节点A的路径、作为索引类型的“字符串连接索引”、作为被连接路径#1的“B/C/D”和作为被连接路径#2的“B/C/E”的索引设置信息。如果在索引设置信息中包括的索引类型是字符串连接索引,则文档管理单元52可以连接由被连接路径#1(即自节点A的相对路径“B/C/D”)表示的节点最近邻的下面的文本节点和由被连接路径#2(即自节点A的相对路径“B/C/E”)表示的节点最近邻的下面的文本节点。

如果通过在上述所述实施例中所述的索引产生请求来指定对依赖于节点A的所有文本节点加索引,则索引管理单元54不设置索引设置信息的被连接路径#1和#2。在这种情况下,因为不指定索引设置信息的被连接路径#1和#2,因此类似于上述实施例,文档管理单元52连接通过设置路径指定的依赖于节点A的所有文本节点(文本节点的值)。

图6B示出了被应用到第一修改示例的ISMT424的示例。在图6B中所示的ISMT424中的每个项目的信息(索引设置信息)除了设置路径和索引类型的信息之外,还包括关于被连接路径#1和#2的信息。在图6B中,在索引设置信息中,其中“/address”和“字符串连接索引”分别被设置为设置路径和索引类型,来自所述地址节点的相对路径“省”和“市”分别被设置为被连接路径#1和#2。在存储XML文档时,例如,根据索引设置信息,在依赖于通过设置路径“/address”指定的地址节点的所有文本节点中,文档管理单元52连接省节点和市节点的值,所述省节点和市节点本分别由作为被连接路径#1和#2的相对路径“省”和“市”指定,所述相对路径“省”和“市”源自在索引设置信息中设置的地址节点。因此,所述省节点的最近邻的下面的文本节点的值(即文本)和市节点的最近邻的下面的文本节点的值(即文本)被连接。

图13与树结构相关联地示出了在存储在图5中的树结构中表示的文档#1和#2时根据在图6B的ISMT424中输入的上述索引设置信息而分配到路径“/address”的索引(字符串连接索引)。在这个示例中,对于文档#1,通过在依赖于“地址”节点510的所有文本的值中连接省节点511的值“Tokyo”和市节点512的值“Fuchu-shi Musashidai”而产生索引531,其作为被分配到“地址”节点510的索引。类似地,对于文档#2,通过在依赖于“地址”节点520的所有文本的值中连接省节点521的值“Tokyo”和市节点523的值“Shibaura”而产生索引541,其作为被分配到“地址”节点520的索引。在索引设置信息中包括的被连接路径的数量不限于2。如果N表示1或者更大的任意整数,则被连接路径的数量可以是N。

[第二修改示例]

接着,说明所述实施例的第二修改示例。第二修改示例的特性是在通过客户端20的索引产生请求来指定要加索引的文本节点的优先顺序(连接顺序)的情况下,以指定的优先顺序来排序和管理要加索引的文本节点。

图14示出了表示在为树结构的XML文档的示例。每个椭圆或者矩形表示一个节点。由椭圆表示的每个节点被分配名称。在椭圆中写入的诸如“root(根)”的字符串表示节点名称。另一方面,由图14中的矩形表示的每个终端节点是具有父节点(元素节点)的元素的值(例如“f1”)的文本节点,其具有公共的节点名称“text(文本)”。在图14中所示的XML文档的示例中,在具有节点名称“name(名称)”的每个节点(即每个“name”节点)的最近邻的下面有一对“第一”节点和“第二”节点。

在第二修改示例中,假定在ISMT424中输入索引设置信息,其包括作为设置路径的到“名称”节点的路径(/name),并且包括用于指示字符串连接索引作为索引类型的信息。所述索引设置信息包括作为被连接路径#1和#2的来自“名称”节点的相对路径“第一”和“第二”。在第二修改示例中,在所产生的字符串连接索引的阵列(索引数据阵列)中,在由被连接路径#1指定的每个“第一节点”的最近邻的下面的“文本”节点的值比在由被连接路径#2指定的每个“第二节点”的最近邻的下面的“文本”节点的值具有更高的优先级。由此在所述索引数据阵列中,根据在索引中包括的“第一”节点的最近邻的下面的“文本”节点的值来对索引分类。由于这个原因,在ISMT424中输入的索引设置信息包括在索引数据阵列中,在由被连接的路径#1指定的每个“第一”节点的最近邻的下面的“文本”节点的值具有优先级。

图15通过在存储具有图14中所示的树结构的XML文档时根据上述索引设置信息而产生字符串连接索引,从而示出了在索引存储区域422中存储的索引数据阵列的数据结构的一个示例。在图15中的索引数据阵列中的索引包括“名称”节点的位置信息,和在“名称”节点的最近邻的下面成对的“第一”节点和“第二”节点的最近邻的下面的多个“文本”节点的值。根据在所述“第一”节点(其具有比“第二”节点更高的优先顺序)的最近邻的下面的“文本”节点的值,以例如升序来对索引分类。另外,根据在“第二”节点的最近邻的下面的“文本”节点的值来进一步分类其中在所述“第一”节点的最近邻的下面的各“文本”节点的值相等的索引。

由于这个原因,在图15中所示的索引数据阵列中,包括位于“第一”节点的最近邻的下面的“文本”节点的值“f1”的索引被布置在这样的区域,其中在索引数据阵列中的阵列编号(索引数据阵列编号)小。在其中在索引数据阵列中的阵列编号大的区域中布置包括位于“第一”节点的最近邻的下面的“文本”节点的值“f2”  (f2>f1)的索引。另一方面,可以在索引数据阵列中散布包括位于“第二”节点的最近邻的下面的“文本”节点的值“s1”的索引和包括位于“第二”节点的最近邻的下面的“文本”节点的值“s2”的索引。

接着,将参见图16的流程图来说明在图15中所示的索引(索引数据阵列)的索引搜索处理(即对应于图10的步骤S35的索引搜索处理)的步骤。首先,在由来自客户端20的搜索请求表示的查询指定的具有目标值的索引数据阵列中的索引中,索引搜索单元56搜索其阵列编号(索引数据阵列编号)被存储在最小位置的索引(步骤S41a)。接着,索引搜索单元56将搜索到的索引的阵列编号代入变量“i”(步骤S41b)。索引搜索单元56确定在索引数据阵列中的第i个元素(索引)是否满足由所述查询指定的搜索条件(步骤S42)。

如果在索引数据阵列中的第i个元素(索引)满足搜索条件,则索引搜索单元56在数据库服务器10的存储器中存储作为搜索结果的、在第i个索引中包括的节点位置信息(步骤S43)。索引搜索单元56将变量“i”递增1,并且指定在索引数据阵列中的下一个(相邻的)索引的位置(索引数据阵列编号)(步骤S44)。索引搜索单元56确定在由递增的变量“i”指定的索引数据阵列中的索引是否满足搜索条件(步骤S42)。

在第二修改示例中,对于索引数据阵列,在“名称”节点的最近邻的下面成对的“第一”节点和“第二”节点中的“第一”节点具有优先级。换句话说,在索引数据阵列中,以升序来对在“第一”节点的最近邻的下面的“文本”节点的值的索引分类。由于这个原因,在“第一”节点的最近邻的下面的节点具有相同值的索引在索引数据阵列中相邻。因此,可以在具体的搜索条件(诸如,在“第一”节点的最近邻的下面的节点的值匹配“f1”,或者,在“第一”节点的最近邻的下面的节点的值不小于“f1”并且不大于“f2”)下加速搜索处理。在这样的搜索处理的示例中,如果确定在索引数据阵列中的第i个索引不满足搜索条件(步骤S42),则索引搜索单元56可以确定没有满足所述搜索条件的索引。在这种情况下,索引搜索单元56可以马上结束索引搜索处理。换句话说,在第二修改示例中,有可能防止重复不必要的索引搜索。

另一方面,难于在一种搜索条件(诸如,与在索引数据阵列中具有较低优先级的节点相关联的“匹配具有在“第二”节点的最近邻的下面的节点的值的字符串”)下加速搜索处理。原因是当索引命中(hit)可能散布在索引数据阵列中时,搜索范围变宽。为了加速这样的搜索,可以通过使得“第二”节点具有比“第一”节点更高的优先级来设置新的索引。

[第三修改示例]

接着,将描述所述实施例的第三修改示例。存在一些XML文档,其中,不能仅仅从节点结构指定值类型。如果所述值类型被指定为搜索条件,则难于加速这样的XML文档的搜索。第三修改示例的特性是:当响应于来自客户端20的索引产生请求而产生索引时,节点的值被转换为由所述请求指定的类型。

图17示出了XML文档的树结构,其中,不能够仅仅根据节点结构来指定值类型。在图17的XML文档中,在每个“data(数据)”节点的最近邻的下面存在一对“type(类型)”和“value(值)”节点。在每个“类型”节点的最近邻的下面的“text(文本)”节点具有用于表示诸如“数量”、“产品名称”或者“运输日期”的种类的值。

另一方面,在与“类型”节点成对的“值”节点的最近邻的下面的“文本”节点具有对应于“类型”节点的值的值。例如,如果在“类型”节点的最近邻的下面的“文本”节点的值是“数量”,则在与“类型”节点成对的“值”节点的最近邻的下面的“文本”节点的值是整数。如果“类型”节点的最近邻的下面的“文本”节点的值是“产品名称”,则在对应的“值”节点的最近邻的下面的“文本”节点的值是字符串。类似地,如果在“类型”节点的最近邻的下面的“文本”节点的值是“运输日期”,则在对应的”值”节点的最近邻的下面的“文本”节点的值是日期。

在图17中所示的XML文档的特性是,不能仅仅从节点结构指定值类型。换句话说,其不能仅仅从用于表示在由路径“/data/value”指定的“值”节点的最近邻的下面的“文本”节点的结构的信息确定“文本”节点的值是例如整数、字符串或者日期。在第三修改示例中,通过索引产生请求来指定索引的类型,并且在索引设置信息中包括用于指定类型的信息(类型指定信息)。包括所述类型指定信息的索引设置信息由索引管理单元54按照索引产生请求产生,并且被输入到ISMT 424中。当根据索引设置信息来产生索引时,要被加索引的“文本”节点的值被索引管理单元54转换为由类型指定信息指定的类型的值。

将参见图18的流程图来说明在索引产生时由索引管理单元54进行的类型转换处理。响应于来自客户端20的索引产生请求,“/data”被指定为设置路径,“类型”和“值”被分别指定为被连接路径#1和#2,并且一个整数被指定为在“值”节点的最近邻的下面的“文本”节点的类型。

假定在图17中所示的XML文档中检测到在由被连接路径#2指定的“值”节点的最近邻的下面的“文本”节点的信息(值)。在所述整数、字符串和日期中,所述整数被指定为在“值”节点的最近邻的下面的“文本”节点的值类型。所述值类型不限于这三种,而是例如也可以将浮点应用到所述值类型。

在所述整数被指定为在“值”节点的最近邻的下面的“文本”节点的值类型的情况下,索引管理单元54确定在由文档管理单元52检测的“值”节点的最近邻的下面的“文本”节点的值是否可以被转换为指定类型(即整数)(步骤S51)。如果与“值”节点成对的“类型”节点的值是“数量”,则在“值”节点的最近邻的下面的“文本”节点的值是表示整数的字符串。在这种情况下,索引管理单元54确定可以将在“值”节点的最近邻的下面的“文本”节点的检测值转换为指定类型(即整数)(步骤S51)。

接着,索引管理单元54将在“值”节点的最近邻的下面的“文本”节点的检测值转换为指定类型的值(步骤S52)。在这个示例中,表示整数的字符串被转换为整数。索引管理单元54在索引数据阵列加上“文本”节点的类型转换的信息(值)(步骤S53)。

另一方面,如果在“值”节点的最近邻的下面的“文本”节点的检测值是产品名称或者表示日期的字符串,则索引管理单元54确定“文本”节点的值不能被转换为指定类型,即整数(步骤S51)。在这种情况下,索引管理单元54限制将在“值”节点的最近邻的下面的“文本”节点的检测信息加到索引数据阵列上(步骤S54)。

因此,仅仅在索引数据阵列中设置具有作为数值(整数)的、在“值”节点的最近邻的下面的“文本”节点的值的索引。如果所述“值”节点具有比“类型”节点更高的优先级,则根据在“值”节点的最近邻的下面的“文本”节点的数值的数量大小上的关系来在索引数据阵列对索引分类。换句话说,以与例如在词典中相应的字符串出现的顺序不同的顺序来在索引数据阵列对索引分类。另外,在所述索引中,在“值”节点的最近邻的下面的“文本”节点的值不被存储为字符串,而是被存储为数值(整数)。换句话说,可以通过使用“文本”节点的类型信息来优化在索引中的数据存储方法。由于这个原因,与在“值”节点的最近邻的下面的“文本”节点的值是字符串的情况相比较减少了索引的数据量,并且可以减少索引的整体数据量。

假定采用如此分类的索引,在例如下述条件下执行搜索:“在“类型”节点的最近邻的下面的“文本”节点的值是“数量”,并且在“值”节点的最近邻的下面的“文本”节点的值不小于20,并且不大于25”。如上所述,根据在“值”节点的最近邻的下面的“文本”节点的数值的数量大小上的关系来对索引分类。由于这样原因,被命中的索引(hit index)在索引数据阵列中相互接近,因此可以加速搜索处理。

因此,根据对于索引产生指定的类型,索引管理单元54仅仅将可以被转换的节点信息的类型为指定类型,并且在索引数据阵列中存储所转换的类型。由此可以减少索引的数据量,并且可以增大搜索速度。而且,即使在XML文档(其中不能仅仅从节点结构信息来指定节点值的类型)的搜索中也可以增大搜索速度,其中在所述XML文档中节点值的类型不能够仅由节点结构信息指定。

在所述实施例及其修改示例中,假定结构化文档是XML文档。但是,本发明也可以被应用到除了XML文档之外的诸如SGML(标准通用标记语言)文档的结构化文档。另外,客户端20经由网络30连接到结构化文档管理系统50的数据库服务器10。但是,客户端20可以直接地连接到结构化文档管理系统50的数据库服务器10。而且,以在客户端20上的操作相同方式在客户端20上操作应用程序,可以与客户端20类似地使用数据库服务器10的键盘和显示单元等。换句话说,数据库服务器10可以被用作客户端。

本领域内的技术人员容易看出另外的优点和改进。因此,本发明在更广的方面不限于在此所示和所述的代表性实施例的具体细节。因此,在不脱离由所附的权利要求及其等同内容限定的总的发明构思的精神和范围的情况下,可以进行各种修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号