Content Manager OnDemand 的客户不仅可以搜索文档关联的元数据,并且在 V9.0 版本之后,可以通过 Content Manager OnDemand 提供的智能全文检索(FTS)的新特性,能够对归档数据的内容部分进行智慧的全文检索。
全 文检索(FTS)新特性以新服务器的方式发布,通过全文检索引擎实现文档的抽取解析,建立用于全文检索的索引和内容搜索。这样的好处是可以将全文数据转移 到 OnDemand 库服务器和对象服务器之外的其它机器上进行处理。除了可以处理常规的 Advanced Function Printing(AFP),行数据和 PDF 文档,该引擎还可以处理许多其它类型的二进制格式文件,包括 Microsoft Office 和 XML 文件等等。全文检索(FTS)支持对新数据的索引,也支持对既有数据的索引。从管理客户端既可以设置对新装载数据自动的进行全文检索操作,而对于历史数据 则需要通过命令行或者 ODWEK API 进行操作。同时在内容搜索上提供了更多高级搜索的选项。客户可以使用通配符搜索,模糊搜索,近似度搜索和布尔搜索等组合。
与之配合的新组件 FTS Exporter 是包含在 OnDemand 服务器中,负责处理所有对全文检索(FTS)服务器的更新操作。
Content Manger OnDemand 全文检索的组件架构
Content Manger OnDemand 全文检索的组件架构参考下图。
图 1. 全文检索组件架构
这些组件包括 Content Manager OnDemand 服务器,全文检索(FTS)服务器以及 FTS Exporter 组件。
全文检索(FTS)服务器
全 文检索(FTS)服务器提供了全文检索的流水线服务,从各类主流的二进制格式文件中进行文本抽取,提供大范围的编码支持及多语言支持。在典型的服务器配置 中,文档内容和属性从 OnDemand 服务器传送到全文检索(FTS)服务器进行预处理。预处理包括文本抽取,语言识别,标记化和语言分析。在预处理结束后,文档被送去做索引。
全文检索(FTS)服务器的文本抽取引擎可以处理不同类型的文档类型,包括 Microsoft Office 和 XML 格式等。注意 AFP 和行数据的文本抽取是在 FTS Exporter 组件中处理的。对于图像类的文件不支持全文检索。
索引结构
在 全文检索(FTS)服务器将建立用于全文检索的索引,并以逻辑组的形式进行分段,称之为 Collection。分段模型类似于 Ondemand 服务器的数据表分段。对于 OnDemand 服务器中的每张数据表,在全文检索(FTS)服务器中索引后,将建立其对应的 Collection。也就是说,全文检索(FTS)服务器中的 Collection 和 OnDemand 服务器中的数据表是 1:1 的关系。
图 2. OnDemand 分段表和 FTS Collection 的映射关系
Collection 的命名规范是 InstanceName_TableName,这样的好处是有较好的水平扩展性。例如,当用户在进行全文检索的同时指定了日期范围,则将引用 OnDemand 的分段表,来缩小被查询文档的范围,并确定哪些 Collection 才是必需的。
FTS Exporter
在 OnDemand 数据库中引入了新的数据表 arsftiwork,用于维护全文检索的工作记录。即每当某个文档需要为全文检索建立索引时或其它更新操作时,在 arsftiwork 数据表中将会新建一条记录。在应用程序组启用全文检索后,新装载的数据将触发 arsftiwork 数据表。同样的,当用命令行对既有数据做全文检索建立索引时,也将触发 arsftiwork 数据表。
FTS Exporter 连接到 arsftiwork 数据表,并处理表中的工作记录。首先将记录关联的文档从 OnDemand 服务器检索出来,然后再推送到全文检索(FTS)服务器。FTS Exporter 处理所有与全文检索索引相关的新增、更新和删除任务。
FTS Exporter 组件位于 OnDemand 服务器安装路径下的 jars 子目录,名称 ODFTIExporter.jar 的 Java 应用。FTS Exporter 组件可以在 OnDemand 服务器所在的系统上运行,也可以在其它 TCP/IP 连通的系统上运行。
Content Manager OnDemand 全文检索配置方法
安装需求
OnDemand 全文检索工具是有单独的安装,并且也是单独付费的功能。本文以版本 Content Manager OnDemand(以下简写为 CMOD)9.0 为例,先介绍全检索服务器的安装需求。
全文检索服务器支持如下操作平台,
AIX SUSE Linux ES RedHat Enterprise Linux
Solaris Solaris
全文检索的最小运行硬件需求:
1 处理器 2G 内存
磁盘空间
实际上磁盘空间,处理器和内存的需求主要影响因素:
全文检索服务器的集合数量以及每个集合里的文档数量 并发索引的处理的集合数量 索引查询吞吐量要求
安装步骤和方法
全文检索服务器可以和 OnDemand 服务器安装装载同一台物理机器,也可根据实际的负载均衡,安装在单独的物理机器上。本文的描述的是一体机(All in One)的安装方法。
首先将安装文件拷贝到 OnDemand 全文检索服务器上。
操作系统 安装软件名称 AIX odftsaix.bin SunOS odftssun.bin Linux odftslinux.bin zLinux Odftszlinux390.bin Windows odftswin.exe
然后运行安装文件。
./安装文件名称 –i console
比如在 AIX 操作系统安装命令:./odftsaix.bin –i console
配置与管理
配置管理分为两部分,第一部分是 CMOD 服务器端的配置管理,主要是更新配置文件和通过 Windows 管理端接口进行设置;第二部分是全文检索服务器端的配置管理。
CMOD 服务器端的配置管理
首先配置 CMOD 服务器的配置参数,使其支持全文检索功能。
以 AIX 平台为例,编辑 ars.cfg 文件,添加配置参数:
ARS_SUPPORT_FULL_TEXT_INDEX=1
备注:如果是 SunOS, 还要添加参数 ARS_FULL_TEXT_INDEX_TOKEN=fIqBxTQ= 作为全文检索服务器和 CMOD 服务器的通信令牌。
Windows 管理端接口配置
应用程序组
在应用程序组的配置中,启用全文检索选项,同时配置全文检索服务的地址和端口。
图 3. 管理端配置
在应用程序组配置中,增加全文检索字段。
在图 4 的应用程序组字段定义窗口,添加全文检索字段名,定义全文检索的字段为 fti。
图 4. 应用程序组全文检索字段
在图 5 的字段信息定义窗口,定义该字段的属性。
图 5. 应用程序组全文检索字段属性
在图 6 的权限属性页,设置相关的用户有全文检索的权限,例如 testuid 用户有全文检索的权限。
图 6. 设置用户权限
文件夹
文件夹是最终用户检索文档的界面,配置全文检索字段。用户可以通过检索界面进行全文检索,罗列出检索结果。有四种文件夹字段类型。
全文检索字段 – Full Text Index Search,这是必须选的字段。通过这个字段,用户输入要全文检索的内容,进行检索查询。
图 7. 文件夹全文检索字段 Full Index TextSearch
全文检索分值 – Full Text Index Score,这是可选字段。通过这个字段的返回结果,可以了解全文检索的匹配度。
图 8. 文件夹全文检索字段 Full Index Score
全文检索高亮 – Full Text Index Highlight,可选字段。通过该字段的返回的结果,可以看到匹配结果的上下文信息。
图 9. 文件夹全文检索字段 Full Index Highlight
全文检索摘要 – Full Text Index Summary,可选字段。通过该字段返回的结果,可以看到检索到的文档前 80 个字的内容。
图 10. 文件夹全文检索字段 Full Index Summary
FTS 全文检索服务器的配置与管理
全文检索服务器安装好之后,如果紧紧演示或者测试使用,缺省配置不用做改动,直接启动服务即可。
下面是在 AIX 平台上启动 FTS 的示例:
# cd /opt/IBM/odfts/V9.0/bin# ./startup.shIQQG0337I The server [version: 2.0.0.0-1.1-2593] started successfully. The server is listening on port 8191.#
终止 FTS 全文检索服务:
# cd /opt/IBM/odfts/V9.0/bin# ./shutdown.sh IQQG0088I The shutdown request is being sent: localhost:8191.IQQG0089I The shutdown request was sent successfully with a response code of 200.IQQG0025I Shutdown is complete.
接着我们介绍另外两个管理命令行。
adminTool – 管理工具主要是管理集合(collection), 跟踪日志配置以及服务器的配置。
# ./adminTool.shUsage: adminTool admin_command [-configPath value] [-locale value] [-collectionName value] [-collectionPath value] [-logLevel value] Where: admin_command: delete: Deletes the specified collection optimizeIndex: Optimizes the specified collection for fast search optimizeIndexStatus: Prints the optimization status status: Prints the status of all collections version: Prints the version number of the search serversupportedClientVersions: Prints the list of supported client versions configureTrace: Sets the search server trace to different log levels printLogLevel: Prints the current search server log level setting help: Prints this help message -configPath value The fully qualified path to the configuration directory, such as /opt/ibm/search/config. -locale value The 2- or 5-character locale code, such as en, de, or zh_TW. If omitted, the server locale is used (optional). -collectionName value The name of collection that you want to delete or obtain status information about. -collectionPath value The full path to the directory where collections are stored (optional). -logLevel value The supported log levels are OFF SEVERE WARNING INFO CONFIG FINE FINER FINEST ALL Example to delete the Default collection: adminTool delete -configPath /opt/ibm/search/config -collectionName Default Example to print the status of all collections using the French locale: adminTool status -configPath c:\Program Files\IBM\Search\config -locale fr_FR
configTool – 用户管理配置系统参数
# ./configTool.shUsage: configTool <command> [-command_options] [-locale value] [-configPath value] command: list: Prints information about configuration parameters and their values. set: Specifies system-level or collection-level parameter values. generateToken: Generates a token for communicating with the server. upgradeConfigFolder: Upgrades the server configuration. For help on these commands and their command options, enter: configTool <command> printToken: Prints the current token. sysinfo: Prints system information, including: build version, operating system, and JAR manifest version help: Prints this help message. -locale value The 2- or 5-character locale code, such as en, de, or zh_TW. If omitted, the en locale is used. (optional) -configPath value The fully qualified path to the configuration directory, such as /user/home/search/config. If omitted, the default directory (../config) is used. (optional)
启动 CMOD Exporter
Exporter 是一个 java 应用,与 CMOD 安装包一起安装在 CMOD 服务器目录下。
# cd /opt/IBM/ondemand/V9.0/jars# ls -ltotal 7088-r--r--r-- 1 root system 165199 Jan 10 2013 ODFTIExporter.jar-r--r--r-- 1 root system 575389 Jan 10 2013 commons-collections-3.2.1.jar-r--r--r-- 1 root system 350332 Jan 10 2013 commons-configuration-1.7.jar-r--r--r-- 1 root system 279193 Jan 10 2013 commons-lang-2.5.jar-r--r--r-- 1 root system 315805 Jan 10 2013 commons-lang3-3.1.jar-r--r--r-- 1 root system 60841 Jan 10 2013 commons-logging-1.1.1.jar-r--r--r-- 1 root system 1861910 Jul 30 2012 ecmts.jar-rw-r--r-- 1 root system 368 Nov 27 00:54 od1.cfg
该应用主要是将在 CMOD 服务器中定义好的需要全文检索的数据导入到全文检索服务器中,它起着桥梁的作用。
启动 Exporter 可以通过两种方式:
方式一,直接启动。
java –jar ODFTIExporter.jar index –dbEngine DB2 –dbHostname hostname1.com –dbPort 60000 –dbUser admin –dbPassword testpasswd –dbName ARCHIVE –dbUser ROOT odInstance ARCHIVE –odUser admin –odPassword testpasswd –odInstallDir /opt/IBM/ondemand/V9.0 –pollDelay 60
方式二,先使用 Exporter 应用创建配置文件,把参数写入配置文件,然后通过调用配置文件启动 Exporter.
java –jar ODFTIExporter.jar configure –configFile od1.cfg –dbEngine DB2 –dbHostname hostname1.com –dbPort 60000 –dbUser admin –dbPassword testpasswd –dbName ARCHIVE –dbUser ROOT odInstance ARCHIVE –odUser admin –odPassword testpasswd –odInstallDir /opt/IBM/ondemand/V9.0 –pollDelay 60java –jar ODFTIExporter.jar index –configFile od1.cfg
对既有数据建立全文索引
通过 arsdoc 命令建立全文索引
可以使用 arsdoc 命令的 fti_add 参数来对既有数据建立全文索引。需要指定“-i”参数设置 SQL 语句的范围或是“-X”参数指定某次装载的 Load ID。
# arsdoc fti_add -f "FTS-bob16-Student Information3-test" -h ARCHIVE -i "where 1=1" -u testuid -v -G "FTS-bob16-Bills3"ARS6108I Starting arsdoc.ARS6165I arsdoc fti_add -f FTS-bob16-Student Information3-test -h ARCHIVE -i where 1=1 -u testuid -v -G FTS-bob16-Bills3ARS6822I Attempting login for userid 'testuid' on server 'ARCHIVE' ...ARS6080I Login successfulARS6062I Searching for folder 'FTS-bob16-Student Information3-test' ...ARS6084I Search successfulARS6063I Searching for documents in 'FTS-bob16-Student Information3-test' ...ARS6117I Querying database with SQL string 'where 1=1'ARS6084I Search successfulARS6152I Adding 40 documents to Full Text IndexARS6150I Full Text Index add successfulARS6026I arsdoc completed.
如果要删除相应的全文索引,可以使用 arsdoc 命令的 fti_release 参数。
通过 ODWEK 建立全文索引
可 以通过 ODWEK Java API 的 ODFolder.FTIAddHits() 方法新建全文索引,该方法的参数是通过 search() 方法得到的 ODHits 对象。而 ODHits 对应的文档将通过 FTS Exporter 发送来建立全文索引。
另一个方法 FTIReleaseHits() 用来从 FTS 服务器删除相关的全文索引。
更多信息请参考 IBM Content Manager OnDemand Web Enablement Kit Java APIs: The Basics and Beyond, SG24-7646。
全文检索结果展示与介绍
前面我们已经对 CMOD 服务器以及定义元素的配置 (比如应用程序组,文件夹等),我们先装在数据到启用全文检索的应用程序组。
# arsload -u testuid -h archive -g FTS-bob16-Bills2 -X G -nvf FTS.2.FTS-bob16-Bills2.FTS-bob16-Bills2ARS4315I Processing file >FTS.2.FTS-bob16-Bills2.FTS-bob16-Bills2<ARS4334I Load Version <9.0.0.1e> Operating System <AIX> <7.1> OSUserid <root> Install Location </opt/IBM/ondemand/V9.0/>ARS4335I Server Version <9.0.0.1e> Operating System <AIX> <7.1> Database <DB2> <10.01.0000>ARS4312I 01/02/14 03:53:13 -- Loading started, 76560 bytes to processARS1144I OnDemand Load Id = >5190-1-0-5FAA-19940826000000-19940826000000-5191<ARS1146I Loaded 40 rows into the databaseARS1175I Document compression type used - OD77. Bytes Stored = >7522< Rows = >40<ARS4310I 01/02/14 03:53:13 Loading completedARS4317I Processing successful for file >FTS.2.FTS-bob16-Bills2.FTS-bob16-Bills2<
由于应用程序组已经设置为自动进行全文索引,因此在数据装载时,文档将自动建立全文索引,并存储于 FTS 服务器中。
登陆 OnDemand 客户端后,打开相应的全文检索文件夹进行全文检索。例如,设置 Full Index TextSearch 字段为 55402,即检索出满足搜索条件的所有包含“55402”的文档。
图 11. 全文检索查询结果