增强 WebSphere Service Registry and Repository 的搜索功能

引言

IBM WebSphere Registry and Repository(以下称为 Service Registry)让您能够以受管控的方式存储、组织和搜索与服务、服务之间的关系以及服务生命周期相关的技术文档。Service Registry 是基于分层数据库的技术,可以在更传统的关系数据库管理系统 (RDBMS) 上构建 XML 数据库引擎,以便能够方便地管理接近原始 XML 形式的 XML 文件。Service Registry 允许您描述 XML 文档中各部分之间的逻辑关系(例如,WSDL 文件中的接口和数据结构描述)和维护各部分之间的内部关系。它还允许您在不同的文档及其逻辑部分之间建立关系。

在 Service Registry 中,文档、逻辑对象和关系生命周期都可以从通过状态机实现的定义良好、可自定义或可替换的流程进行管理。除了以上所述的逻辑实体之间的结构化静态关系之外,Service Registry 还可以使用本体(特别是分类法)来创建这些实体之间的动态关系。这些分类法可归纳对象之间的语义关系。

Service Registry 的另一个相关功能是从其内部 XML 表示形式中派生出来的,该功能能够搜索使用类似 Xpath 的语言的文档和逻辑实体,从而能够使用结构和语义关系模型来导航对象网络。但是,Service Registry 当前缺少全文搜索功能,这意味着使用关键字或其他更先进的条件进行搜索当前还不可能。

在本文中,您将了解如何使用 Service Registry 的可扩展性框架和以下两个开源项目将全文搜索功能引入到其中:Apache Lucene 和 Spring 框架。我们将通过一些场景来说明,对于每个解决方案而言,实现的方便性与集成的普遍性之间的权衡。这两个解决方案的插件代码可在下载部分中找到。

为了全面了解技术实现,您应适当掌握一些 Java™ 知识,但是在参与一般性讨论时对此并没有严格要求。

Service Registry 可扩展性框架

Service Registry 具有一个可扩展性框架,该框架允许您开发一些插件来增强产品本身的内部行为的多个方面。插件方法在文档操作(创建、更新和删除,以下称为 CRUD 操作)的特定阶段中调用,并且可隐式用于允许或拒绝对象更改。

Service Registry 允许以下三种类型的插件:

  • Validator,在 CRUD 操作执行之前调用,因此在对象未到达存储区域之前,对象还不是一成不变的,您可以对其进行更改。
  • Modifier,在 CRUD 操作之后调用,可用于更改与对象相关的信息,但是不能轻易地更改对象本身。
  • Notifier,在 CRUD 操作完成之后调用,可用于实现通知机制,但是无法修改对象本身。

图 1. 逻辑插件结构
图 1. 逻辑插件结构

我们将利用验证器插件的功能来更改对象表示形式,以便引入新对象的属性,新对象属性将使用从正在处理的文本形式的文档中派生出来的关键字(或统计上相关的令牌)来填充。

通过使用 XPath 功能搜索属性内部的子字符串,我们将能够使用基于关键字的搜索方法对文档进行全文搜索。使用本体对通用(二进制)文档进行 XPath 查询的示例如下:

/WSRR/GenericDocument[classifiedByAnyOf(.,'<classification URI>')]

而使用全文搜索功能时,您可以使用如下查询:


 

本文转自IBM Developerworks中国

        请点击此处查看全文

你可能感兴趣的:(增强 WebSphere Service Registry and Repository 的搜索功能)