使用Rico JavaScript库、ColdFusion MX 7和Windows Indexing Service构建一个2010-11-26 IBM Philippe Randour使用Rico JavaScript库、ColdFusion MX 7和Windows Indexing Service构建一个启用Ajax的搜索页面几个月前,我和一些同事讨论关于将一个搜索工具添加到 Intranet 中(作 为一个向导)并将其扩展到企业网站中的可能性。此提议的主要目标之一是弄清 楚哪些访问者在查找 Web 内容并相应地改变了内容。我们中的一些人构想了一 个完全自定义的解决方案(我不是在开玩笑)。他们建议在数据库服务器上构建 表以存放关键字以及与其相关的页面地址。关键字的提取将是一个手动进程,关 键字的选择完全取决于执行选择的人。对索引的查询将使用标准结构化查询语言 (Structured Query Language,SQL)来执行。但是随后出现了一种不同的看法。我们手头已经有了实现此功能所需的一切 :用于所有服务器的完整 Windows 环境和内部开发已经使用的 工具 (ColdFusion)。惟一缺少的一件东西是有关如何使用此工具来实现此功能的文档 。我们可以获得许多有关 Active Server Pages (ASP) 的信息,但是却缺少有 关 ColdFusion 的资源。作为我们团队中惟一一个具有必要技能的成员,我捋起 了袖子,构建了用于 ASP 的 ColdFusion 等价物,它成为我们的搜索工具。在 这个过程中,我决定与社区一起分享。下面开始介绍给大家。介绍此工具在我讲述如何构建搜索工具的细节之前,本节介绍贯穿于全文使用的工具。 每个工具都在最后的解决方案中扮演着特定的角色:Rico JavaScript 增强显示 结果时的用户体验,ColdFusion MX 7 访问索引并构建搜索结果,Windows Indexing Service 提供索引基础设施。Rico JavaScript 库Rico JavaScript 库是在 Apache 2.0 Licens 下可用的开源 Asynchronous JavaScript + XML (Ajax) 框架。它着眼于简单性,即通过提供单个 JavaScript 对象来添加对任何 HTML 页面的支持。要开始使用它,必须在超文本标记语言 (Hypertext Markup Language, HTML) 页面标题中包括提供必要功能的 JavaScript 库:
<script src="prototype.js"></script>
<script src="rico.js"></script>
这样做会导致自动创建 Ajax 引擎的一个实例,并通过一个名为 ajaxEngine 的对象使其可访问。除了拖放支持和动画效果之外,此 Ajax 框架还提供了我在本文使用的下列 关键特征:基本 Ajax 响应的标准 Extensible Markup Language (XML) 定义。将响应链接到特定 HTML 元素的功能使用响应内容自动更新目标 HTML 元素的 innerHTML 属性ColdFusion MX 7ColdFusion MX 7 是一个可用于开发高性能动态网站的应用服务器和 Web 开 发框架。ColdFusion 的强大都来自于它的灵活语言:ColdFusion Markup Language (CFML)。此语言的语法模仿 HTML,因此很容易掌握。CFML 提供了大 量的标记来封装或扩展 HTML 并执行条件处理、与本地文件系统交互、执行 HTTP 或 FTP 操作、动态生成 PDF 文件、连接到外部应用程序创建的各种数据 ,等等。使用所有的内置功能以及与其他应用程序或服务集成的灵活性,CFML 可以立即满足您的所有 Web 开发需求。当然,您可以使用其他语言来提供本文展示的搜索页面。您可以使用任何 Web 语言,比如 PHP、 ASP 或 Ruby on Rails 等,只要这种语言能够访问 Component Object Model (COM) 对象。这是使用 Windows Indexing Service 访问索引内容时的惟一需求。Windows Indexing ServiceWindows Indexing Service 是安装在 Windows XP 或 Windows Server 2003 系统上的基础组件。它的角色是分析文件系统上或 Web 服务器中的文档属性和 内容,然后构建一个索引目录以方便对此数据的搜索。可以在 Add/Remove Programs 工具(可以通过 Control Panel 直接访问) 的 Add/Remove Windows Components 区段中检查其安装(参见图 1):图 1. 添加/删除 Windows 组件