由于工作需要,笔者在hp ux, soralis 上面设置了oracle intermedia来实现全文检索。目前已经投入实际使用。设置过程中有许多问题和经验,拿来和大家交流。本文依据的是oracle 8.1.6 和8.1.7两个版本,不能保证适用于其他版本。
目前全文检索功能几乎所有主流数据库都支持。此前笔者曾在sql server 2000上实现,感觉非常简单,方便,但创建全文检索索引的时间比较长,通常要十几个小时。oracle 的全文检索建立和维护索引都要快得多,笔者的65万记录的一个表建立索引只需要20分钟,同步一次只需要1分钟。但设置就要复杂得多。
一.设置过程
1.首先,检查你的数据库是否安装了intermedia
这可以通过检查是否有ctxsys用户和ctxapp角色(role). 如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。
修改过程:
运行 $oracle_home/bin/dbassist, 选择'modify database', 然后在选择数据库功能时将j server 和 intermedia 都选上(安装intermedia必须同时安装jserver).强烈建议你在做这个改动前先备份整个数据库。
2.设置extproc
oracle 是通过所谓的‘外部调用功能’(external procedure)来实现intermedia的,因此正确地设置extproc是关键一步。
首先要配置listener 使它能监听intermedia 调用的请求。你可以通过运行$oracle_home/bin.netassit 来进行配置,也可以手工修改配置文件:$oracle_home.network/admin/listener.ora ,然后重新启动listener。下面以一个例子来讲述如何手工修改配置文件。
打开listener.ora文件,在修改前,通常有如下内容(假定使用缺省listener):
listener =
(description =
(address = (protocol = tcp)(host = mydatabase)(port = 1521))
)
sid_list_listener =
(sid_desc =
(global_dbname = mydatabase.world)
(oracle_home = /u01/app/oracle/product/8.1.6)
(sid_name = mydatabase)
)
这个listener还没有配置extproc, 因此,需要为它增加对extproc的监听,办法就是分别增加description 和 sid_desc. 修改后的listner.ora 如下:
listener =
(description_list =
(description =
(address = (protocol = tcp)(host = mydatabase)(port = 1521))
)
(description =
(address = (protocol = ipc)(key = extproc))
)
)
sid_list_listener =
(sid_list =
(sid_desc =
(global_dbname = mydatabase.world)
(oracle_home = /u01/app/oracle/product/8.1.6)
(sid_name = mydatabase)
)
(sid_desc =
(program = extproc)
(sid_name = plsextproc)
(oracle_home = /u01/app/oracle/product/8.1.6)
)
)
注意上面的host, global_dbname,sid_name,oracle_home应填写你的数据库的实际值,但program一项必须填写extproc.
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器