使用Oracle Text构建全文搜索应用程序
Oracle Text 是一种功能强大的搜索技术,它内置于 Oracle 数据库的所有版本(包括免费提供的快捷版 (XE))中。它所提供的开发API 使软件开发人员能够轻松实现功能齐备的内容搜索应用程序。
Oracle Text 可用于搜索结构化和非结构化文档,是对 SQL 通配符匹配的补充。Oracle Text 支持使用基本的布尔运算符(AND、OR、NOT、NEAR 等)将多个搜索条目组合到一起,此外,它还具有更高级的功能,如 soundex 和模糊搜索,以及结果排序等。该技术支持数百种文件类型,包括 Microsoft Office 和 PDF。Oracle Text 适合多种与搜索相关的使用情况和存储结构。Text 的应用领域包括电子商务、文档和记录管理,以及问题跟踪等。可检索的文本可以结构化形式驻留在数据库中,也可以非结构化形式驻留在本地文件系统中或 Web 上。
Oracle Text 提供完整的基于 SQL 的搜索 API,该 API 包含自定义查询运算符、DDL 语法扩展、一组 PL/SQL 过程和数据库视图。通过 Text API,应用程序开发人员可完全控制索引、查询、安全、演示以及有时会需要的软件配置,在开发即需即用的非自定义软件时尤为如此。通过即需即用的软件产品,您希望使软件的配置尽可能简约,即使这意味着要在产品开发中多做一些前期工作也是如此。降低应用程序的复杂性通常会在产品生命周期的后期,尤其是在支持、维护和未来产品开发阶段中见到成效。
Oracle Text 还支持文档级授权,而文档级授权通常很难在统一的同时保持高性能。借助 Text,组合了关系数据与非结构化数据的混和查询也得到了很好的支持。对于授权,这意味着您可以将全文搜索和授权合并到一个查询中。独立结果集和获得最终结果所需的过滤阶段的数量可最大程度地缩减,从而简化了应用程序的开发。Oracle Text 使应用程序开发人员从繁琐的开发中解脱出来,可以集中精力进行性能优化。
Oracle Text 也是编程语言不可知的,并且也可以同样卓越的表现为 PHP 以及 Java 应用程序工作。
前一段时间,我需要提高企业内容管理 (ECM) 系统的搜索功能。我首先对 Oracle Text 的使用进行了评估。评估证明 Oracle Text 是一种构建应用程序搜索非常可行的技术:它具有高级搜索功能,支持大量不同的文件类型,可高度自定义,同时高度可伸缩。原有搜索技术的一个缺点是,您需要在数据库外部运行文件内容搜索,然后运行数据库元数据搜索,对结果进行授权,最后,合并独立的结果集。使用 Oracle Text,所有这些操作都可以在数据库中进行。ECM 系统已经使用 Oracle 数据库来存储元数据。因为此项技术已经推出,因此客户自然会选择使用,而且它也不会给客户增加任何成本。
在数据库中执行自由文本搜索查询的简单方法类似于:
SELECT * FROM issues
WHERE LOWER(author) LIKE %word1% AND LOWER(author) LIKE %word2% ...
使用这种方法,每一列都需要与每个关键字单独进行匹配。在每一列中,可以任何顺序与关键字进行匹配。然而,关系数据库的设计使得它不会像上面那样有效地执行查询,而且使用这种方法会产生极其不可伸缩的应用程序。当然,您可以设计自己的索引和搜索解决方案,但是,那样您可能不会优化使用您的资源,在您已经为将搜索技术作为数据库的一部分付出了成本的情况下尤为如此。
本文讨论 Oracle Text 在虚拟的问题跟踪应用程序中的使用。在这个应用程序中,用户可以创建一些包含元数据和可选附加文件的问题。该应用程序利用 Oracle Text 实现元数据和可选附加文件内容的全文搜索功能。
此处给出的示例已经在 Linux 的 Oracle 数据库 XE 上进行了测试,这些示例应该同样也可在其他 Oracle 平台上运行良好。
索引进程与搜索
Oracle Text 为可检索的数据项建立索引之后,用户才能够通过搜索查找内容。编制索引是确保搜索性能的常用方法。Oracle Text 的索引进程是根据管道建模的,在这个管道中,从数据存储检索来的数据项经过一系列转换之后,其关键字会添加到索引中。该索引进程分为多个阶段,每个阶段都由一个单独的实体来处理,并可由应用程序开发人员来配置。
相关新闻>>
- 发表评论
-
- 最新评论 更多>>