登陆注册
19122000000023

第23章 Oracle的全文搜索(3)

insert into tianen values(2,"计算机公司",′1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(SoftwareDevelopment Laboratories,SDL)的计算机公司(Oracle公司的前身)。那个时候,32岁的Larry Ellison,这个读了三家大学都没能毕业的辍学学生,还只是一个普通的软件工程师。公司创立之初,Miner是总裁,Oates为副总裁,而Ellison,因为一个合同的事情,还在另一家公司上班。");

insert into tianen values(3,′Bruce Scott","没多久,第一位员工Bruce Scott(用过Oracle数据库软件的人都知道有个Scott用户的吧?没错,就是这个Scott,至于Scott用户的密码Tiger,那是Scott养的猫的名字)加盟进来,在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过他们还不知道自己能开发出来什么样的产品。");

insert into test values(4,"Ellison和Miner预见",′在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过他们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加·考特的那篇着名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅读一下。Ellison和Miner预见到数据库软件的巨大潜力,于是,SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。");

insert into tianen values(5,"关系软件有限公司","Oracle(字典里的解释有“神谕,预言”之意)是一切智慧的源泉。1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI)");

insert into tianen values(6,"美国中央情报局",′虽然软件不是很好,但客户还是有的。美国中央情报局迫不及待地想买一套这样的软件来满足他们的需求。但在咨询了IBM公司之后发现IBM没有可以商用的产品,他们联系了RSI。于是RSI有了第一个客户。");

commit;

然后,启动Enterprise ManagerConsole,选择“独立启动”。

在弹出的“数据库连接信息”对话框中输入用户信息进行登录。

在Oracle Enterprise MangnerConsole中,在“方案”节点的子节点“索引”处单击右键,从弹出的快捷菜单中选择“创建”。

弹出“创建索引”对话框,在其中填入“索引名称”等相关信息。单击“创建”按钮,即可完成索引的创建。

系统将会弹出“创建索引成功”的对话框。

在索引名称列表中单击任何一个索引,通过右键菜单可以管理其全部内容。例如,右键单击“TIANEN ISET”,在弹出的快捷菜单中选择“查看编辑详细资料”。打开“编辑索引”对话框。

5.2.5CTXCAT索引

由于Internet商务的出现及其对高性能的要求,对一个表中多个列创建组合索引已十分普遍,此时所有列通常都出现在一个查询中。例如,Internet拍卖站点的用户可能希望查看在特定日期(比如今天)结束的拍卖活动中,某一类别(比如Pokemon项)的所有出价。将出价金额、类别和结束日期列组合在一起的索引,可使此查询得到最佳处理。例如,可创建包含这些列的索引集,索引集可用于创建CTXCAT类型的Oracle Text索引,此索引可用于查询。

可以使用CTXCAT类型(发行版9i新增的)的Oracle Text索引来将文本列和一个或多个其他列编入索引。(在发行版9i之前,唯一的Oracle Text索引类型是CONTEXT,它只将文本列编入索引。)要创建CTXCAT索引,必须先创建索引集,并基于索引集创建CTXCAT索引。本书不做具体介绍,详情请参看Oracle产品文档。

5.3Oracle全文搜索的应用

Oracle一直致力于全文检索技术的研究,当Oracle9i Rlease2发布之时,Oracle数据库的全文检索技术已经非常完美,Oracle Text使Oracle9i具备了强大的文本检索能力和智能化的文本管理能力。

现在,有了前面学习的关于Oracle全文检索的知识,我们可以做两个简单的应用。下面这两个例子使用前面建立的test数据表,一个是桌面应用,一个是Web应用。使用的技术分别为:Oracle9i+Java Swing,Oracle9i+JSP2.4。

5.3.1Oracle全文检索桌面应用

本应用允许用户输入关键词,然后单击“搜索”按钮,执行全文搜索,显示搜索结果。

案例名称:Oracle全文检索桌面应用

程序名称TianenSearcher.java

import java.util.*;

import java.io.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class TianenSearcher

{

//搜索关键词

static JTextField jtf=null;

//搜索按钮

static JButton jb=null;

//文本区域

static JTextArea jta;

private static void createAndShowGUI()

{

…JFrame.setDefaultLookAndFeelDecorated(true);

JFrame frame=new JFrame("Searcher!yutianen@163.com");

frame.setDefaultCloseOperation(JFrame.EXIT ONCLOSE);

Container con=frame.getContentPane();

con.setLayout(newBorderLayout());

JPanel jpup=new JPanel();

jpup.setLayout(new GridLayout(1,2));

jtf=new JTextField(30);

jb=new JButton("搜索");

jb.addActionListener

newActionListener()

{

public void actionPerformed(ActionEvent e)

{

String s=jtf.getText().trim();

jta.setText(search(s));

}

}

);

jpup.add(jtf);

jpup.add(jb);

jta=new JTextArea(10,60);

jta.setLineWrap(true);

JScrollPane jsp=new JScrollPane(jta);

con.add(jpup,BorderLayout.NORTH);

con.add(jsp,BorderLayout.CENTER);

frame.setSize(200,100);

frame.pack();

frame.setVisible(true);

}public static void main(String[] args)

{

SwingUtilities.invokeLater

new Runnable()

{

public void run()

{

createAndShowGUI();

}

}

);

}

private static String search(String s)

{

…Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

StringBuffer res=new StringBuffer("");

try

{

Class.forName("oracle.jdbc.driver.OracleDriver");

}

catch(ClassNotFoundException ce)

{

System.out.println(ce.getMessage());

}

try

{

//获得Connection对象

String url="jdbc:oracle:thin:@ localhost:1521:yuanyuan";

conn=DriverManager.getConnection(url,"scott","tiger");

stmt=conn.createStatement();

String sql="select*from test where contains(body,′"+s+"")>0";

rs=stmt.executeQuery(sql);

while(rs.next())

{

res.append(rs.getString("title")+"

"+rs.getString("body")+"

————");

}

}

catch(SQLException e)

{

System.out.println(e.getMessage());

}

finally

{

if(rs!=null)

{

try

{

rs.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

if(stmt!=null)

{

try

{

stmt.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

if(conn!=null)

{

try

{

conn.close();

}

catch(SQLException ee)

{

System.out.println(ee.getMessage());

}

}

}

return res.toString();

}

}

5.3.2Oracle全文检索Web应用

本应用的实现原理与桌面应用相同,具体程序代码如下所示。

案例名称:Oracle全文检索Web应用

程序名称:test.jsp

<%@ page contentType="text/html;charset=gbk"%>

<%@ page import="java.sql.*"%>

<html>

<body>

<%

try

{

Class.forName("oracle.jdbc.driver.OracleDriver");

}

catch(ClassNotFoundException e)

{

out.print(e.getMessage());

}

Connection conn=null;

Statement stmt=null;

ResultSet rs=null;

try

{

…String url="jdbc:oracle:thin:@ localhost:1521:yuanyuan";

String user="scott";

String password="tiger";

conn=DriverManager.getConnection(url,user,password);

stmt=conn.createStatement();

String sql="select*from test where contains(body,""scott"or"oracle"")>0";

rs=stmt.executeQuery(sql);

while(rs.next())

{

String a=rs.getString("id");

String b=rs.getString("title");

String c=rs.getString("body");

out.print(a+"<br>"+b+"<br>"+c+"<hr>");

}

}

catch(SQLException ee)

{

out.print(ee.getMessage());

}

finally

{

if(rs!=null)

{

try

{

rs.close();

}

catch(SQLException ex)

{

out.print(ex.getMessage());

}

}

if(stmt!=null)

{

try

{

stmt.close();

}

catch(SQLException ex)

{

out.print(ex.getMessage());

}

}

if(conn!=null)

{

try

{

conn.close();

}

同类推荐
  • 新课改·高一数学备课素材

    新课改·高一数学备课素材

    高1数学备课素材(全1册)(新课改)》中,我们为您呈现了曲折发展的数学知识创造史、鲜活真实的生活数学案例、历史长河中的数学名题与猜想、步步前行的数学探索者、轻松幽默的数学小故事,为教师的备课、教学、研究、学习提供了完善的知识储备。加强专业知识的学习是永恒的主题。教师要积累专业知识,关注本学科的发展历程,力求专业知识专深广博。教师的知识广而深,才能在教学实践中敢走新路而且能走好新路。
  • 青少年提高逻辑思维能力训练集——归纳类推法训练

    青少年提高逻辑思维能力训练集——归纳类推法训练

    当今时代是一个知识爆炸的时代,也是一个头脑竞争的时代;在竞争日益激烈的环境下,一个人想要很好地生存,不仅需要付出勤奋,而且还必须具有智慧。随着人才竞争的日趋激烈和高智能化,越来越多的人认识到只拥有知识是远远不够的。因为知识本身并不能告诉我们如何去运用知识,如何去解决问题,如何去创新,而这一切都要靠人的智慧,也就是大脑思维来解决。认真观察周围的人我们也会发现,那些在社会上有所成就的人无不是具有卓越思维能力的人。
  • 廉洁教育小学版

    廉洁教育小学版

    “廉洁”自古以来就是人们所称颂的高尚品质。三国时期,蜀国境内“刑法虽峻而无怨者”,很重要的一个原因就是蜀国名相诸葛亮率先垂范,严于律己。“一身正气,两袖清风”的周总理,身居高位,但从不谋私,平时外出,吃饭、喝茶,都是自己付钱,把自己的一生都奉献给了党和人民,“鞠躬尽瘁,死而后已”,给全世界人民留下了清正廉洁的美名。
  • 广告策划与品牌管理

    广告策划与品牌管理

    本书包含认知广告、设计广告战略、分析消费者广告心理、广告创意策划、创造广告文案、广告媒体选择与投放、广告预算与效果评估、品牌管理等十个任务。
  • 安全教育二年级(上)

    安全教育二年级(上)

    《安全教育》系列编写的是孩子安全教育的图书。本书主要讲述的是自我保护能力是孩子们快乐健康成长的必备能力。只有学会自我保护,远离危险,我们的孩子才能拥有幸福,享受美好的生活。
热门推荐
  • 风轻扬,夏未央

    风轻扬,夏未央

    两个人的巧合,总有个人坚持,回到原来的路,住同一个城市。兜兜转转,希望我们依然能为爱坚持…
  • 追赶未来

    追赶未来

    叶追未,追赶未来,这是他父母给他起名字的含义。但是,他对他的未来充满迷茫与失望。不过,奇迹这东西有时候它确实是存在的。现在就是过去,下一秒即是未来!浩瀚宇宙中的起点空间,无穷的轮回世界,热血沸腾的故事!
  • 行师

    行师

    我之所以可以活这么久,并不是我有着所谓强大的力量,而是我对给予我力量的自然由衷的产生敬意与谦卑。
  • 末世之非人军团

    末世之非人军团

    末世降临。小金获得升级系统,攒晶核、换商品什么的不要太逆天。那是啥,柳树都长腿跑了?!有意见?信不信抽你丫的~柳树疯甩着自己的枝条。哎哟喂,这么一头傲娇的狗熊?话说狗熊什么的都是很憨厚的吧?有意见?!一巴掌拍死你信不信~狗熊扬起自己巨大的巴掌。什么?俺们最亲最爱的小金大人被个死女人陷害的下落不明?干他丫儿的去!!浩浩荡荡的变异动物群跑过,被压成饼的丧尸们哭了。小金握爪狂笑,咩哈哈,这就是俺的逆天异能!俺可是有非人类后备军团的大人物,谁敢不服?站出来!
  • 佛说拔除罪障咒王经

    佛说拔除罪障咒王经

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • EXO之时光倒流让他们回来

    EXO之时光倒流让他们回来

    “原谅我没办法保护你,还让你费尽心思的来保护我们”——鹿晗“你说我傻,因为我想看见你毫无保留的笑,我愿意成为你的快乐病毒”——朴灿烈“那首钢琴曲,我想让你和我一起填词..”——张艺兴“不开心就是不开心,开心就是开心,不要隐藏”——边伯贤“你说我好像丢了笑,我的笑只给你一个人看”——吴世勋“你我一个世界的人,身上也有同一个任务,但是我想为你分担”——艾瑞克“不知道为什么每一次冲动的时候你出现就冷静了许多”——焰王“傻瓜,我早就给了你承诺是你没有发现”——金俊勉时光再回到我们认识的当初一定不会再去那间咖啡店,不会再让你认识我们......因为没有你会想你,想你很痛苦....
  • 渡不过的河——忘川

    渡不过的河——忘川

    有河名忘川,美人倚畔兮。记得那年初遇,你衣裙楚楚,美好的恍若从画中走出。我画地为牢,圈起自己的一座心城,你笑容明媚,照射入我的心。忘川河畔,美人巧笑倩兮,你绯裙飘飞,与蝶共舞。有河名忘川,凝聚人之悔与恨。你躺在我的长枪下,永远不会醒来。悔之,恨之。有河名忘川,美人倚畔兮。愿在忘川河畔,与你再见钟情。这一次,我不会再错。你等我。
  • 世界教育艺术大观·百年教育人物传记第38辑

    世界教育艺术大观·百年教育人物传记第38辑

    “世界教育艺术大观·百年教育人物传记”丛书,自发行以来深受广大教师、师范专业学生、教育工作者欢迎,成为很多地方教师培训用书,获得了较高的社会评价。丛书共有50辑,介绍了许多教育学家的教育思想和办学事迹。教育大计,教师为本。教师是教育事业科学发展的第一资源。有一流的教师,才有一流的教育。党中央、国务院高度重视教师队伍建设,关心教育家的成长。
  • 天魔九剑诀

    天魔九剑诀

    “穿越?别特么逗我了,怎么可能?我堂堂护龙一族高手怎么会相信这些呢?“刘辰道。事事无绝对,华夏护龙一族高手,杀手界的魔影,做个飞机竟然失事了。他穿越到了唐朝,从此又是一个风骚的人生!战突厥、平波斯、还意外进入了修行界。几百年后,有人评价:刘辰一去修行界,修行界美女的质量至少倒退五千年!九天玄女美吧?到了哥面前照样得跪。什么魔族魔女?什么光明天使?老子眼里都是浮云!新人,求照顾!求推荐!求收藏!求人气和点击!天魔九剑诀贴吧已经建立大家可以去看看!
  • 王者权杖

    王者权杖

    穿越成为一个领主的后代对孙韬来说简直是梦寐以求,尤其还是唯一的直系后代,这一定预示着自然醒手抽筋的节奏。不过悲催的是他穿越的方式不对,或者说是时机不对,反正刚刚成为一个纨绔小贵族就赶上了家族惨祸,不得不开始逃亡。接下来同伴、盟友、敌人逐一登场,大事小事纷涌而至。贵族军队的侵占、神秘教徒的陷害、数以万计亡灵海洋朝着领地进发,眼看着距离取回领地做一个轻松逍遥小贵族的理想生活越来越远,他只得带上一众少女、数名大汉以及形形色色的追随者们踏上了艰苦的开拓之路,为了自己今后的逍遥生活而努力争取着。在这条路上他曾到达过野蛮人的故乡,曾在大魔海上杨帆,曾踏足过焦灼之地,曾深入到黑暗国度,曾开拓过无尽荒野,他的足迹和名声遍布这片大陆。其实,他最终的愿望只不过能躺在领主城堡的平台上,逍遥自在地悠闲度日而已。“这一切都是你们逼的啊……”孙韬,不,李昂同学恶狠狠地说道。