登陆注册
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();

}

同类推荐
  • 中学化学课程资源丛书-化学新里程

    中学化学课程资源丛书-化学新里程

    作为科学教育的重要组成部分,新的化学课程倡导从学生素质的培养和社会发展的需要出发,发挥学科自身的优势,将科学探究作为课程改革的突破口,激发学生的主动性和创新意识,促使学生积极主动地去学习,使获得化学知识和技能的过程也成为理解化学、进行科学探究、联系社会生活实际和形成科学价值观的过程。本套丛书集知识性与实用性于一体,是学生在学习化学知识及教师在进行引导的过程中不可或缺的一套实用工具书。
  • 语文新课标必读——伊索寓言精选

    语文新课标必读——伊索寓言精选

    《伊索寓言》是全世界拥有读者最多的一本书,它对西方伦理道德、政治思想影响最大。它是东西方民间文学的精华,劳动人民智慧的结晶。它也是影响人类文化的100本书之一。
  • 语文新课标课外读物——辛巴达历险记

    语文新课标课外读物——辛巴达历险记

    现代中、小学生不能只局限于校园和课本,应该广开视野,广长见识,广泛了解博大的世界和社会,不断增加丰富的现代社会知识和世界信息,才有所精神准备,才能迅速地长大,将来才能够自由地翱翔于世界蓝天。否则,我们将永远是妈妈怀抱中的乖宝宝,将永远是温室里面的豆芽菜,那么,我们将怎样走向社会、走向世界呢?
  • 学生球类运动学习手册——教你打网球

    学生球类运动学习手册——教你打网球

    21世纪,人类进入了新经济时代。综合国力竞争的实质是民族素质的竞争,是人才的竞争,是教育的竞争。在这样的背景下,加强素质教育,尤其是进行身体素质教育就显得更为重要。球类运动是世界上开展的最广泛的运动项目之一,也是广大体育爱好者乐于观赏和参与的体育运动。经常进行此类运动,不仅可以增强人们的体质,提升身体的协调性,而且还能增强我们的自信心以及培养团队精神。
  • 攻克7大学习问题的145个好方法

    攻克7大学习问题的145个好方法

    学习成绩总是提高不了怎么办?学过的东西总是记不住怎么办?考试总是发慌考不好怎么办?家长想正确指导孩子学习该怎么办?……本书共分五部分,分别针对学习中常见的七类问题——学习兴趣、阅读习惯、听课效率、学习习惯、学习方法、记忆力、应付考试,为大家提供了一些行之有效的方法。
热门推荐
  • 重生成为康熙

    重生成为康熙

    康磊,新毕业的大学生一枚,只因毕业聚会醉酒,乐极生悲,灵魂穿越到刚得天花的清圣祖康熙身上,什么?老毛子打过来了?没说的揍他狗娘养的。什么?英国人要来贸易?让他们来天津,不给我送点礼物就想贸易滚犊子......看他怎样书写不一样的历史
  • 永恒天君

    永恒天君

    太古神魔之战,身具九转轮回神体,号称万法仙祖的战天被冰封,百万年后,战天脱困而出。身为法则缔造者,三千大道创始者之一,战天以九转轮回神体的无上之资,再次踏上永恒之路。这一世,我必逆天!!!
  • 中国大财经

    中国大财经

    与前书《中国:大趋势·大博弈》合起来,应可为这一段中国与全球发展的精彩历史时刻作一见证,也可为仍在“摸着石头过河”的中国体制改革提供一些政策与战略观点上的参考,当然,对石齐平个人而言,又再是一本纪录,纪录了他在此期间中思想发展的历程。
  • 女子轮回修仙传

    女子轮回修仙传

    现代都市女强人阴差阳错与黄中李树融合,得到黄中李的传承,从此走上了一条崭新的道路。简单地说,就是一小女子走了大运开启了修仙之路。千辛万苦来到了灵界,努力升级打怪,争取早日飞升。可是,老爹、老娘你们怎么会是重生滴?!前世还是炮灰!那个宝物多多,美男多多,灵兽多多的女人又是谁?这个出口就是“夫子说”的人是我这世的亲哥哥?那个天天傲娇的吃货竟是我堂哥!修仙之路注定不平凡。。。
  • 中蛊门

    中蛊门

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 如何让孩子爱上阅读:好妈妈的秘密

    如何让孩子爱上阅读:好妈妈的秘密

    关于人与自然的紧密关联,雷切尔·卡森这样说:“那些感受大地之美的人,能从中获得生命的力量,直至一生。”如今,在强调让儿童与自然重逢的时候,我们同样面临一个普遍的问题,就是阅读的缺失,这虽是儿童的,但首先是成人的,因为年轻父母们也很少读书了。孩子需要陪伴,更需要我们讲故事给他们听,可以和他们一起读读书。就如同与自然的关系那样,可以感受阅读之关的人,一定可以从中获得生命的力量。
  • 飞翔之殇

    飞翔之殇

    于是全新的动漫同人……假设坂上智代一年级的学校与主人公一样假设在光坂高中旁边有一个新的高中名为凌越高中假设在主人公二年级下半学期时转学到光坂高中假设希格诺是翔的心上人加守护骑士……还有许多许多……现在各个世界都混在一起了……希望各位看官不要混乱了……嗯,小任的新书,希望大家可以支持我。
  • 降龙少年

    降龙少年

    十四岁少年的一次偶然经历,痛失相依为命的母亲。为救最爱的母亲,踏上艰难坎坷的漫漫征途......
  • 封神至尊

    封神至尊

    为了维护天地规则,凌天选择了和敌人同归于尽,却是因为一颗神秘的石珠,灵魂重生到了万灵宗一个叫叶问天的外门弟子的身上。原本重活一世,只是想要安静的领悟人生的他,却是注定了只能走上强者之路。神秘的石珠,让叶问天深深忌惮的同时,也带给了他无穷无尽的力量和掌控天地的实力。石珠在手,他便是天地至尊,将代表天地惩罚一切罪恶之人。
  • 至尊与王子的校园恋

    至尊与王子的校园恋

    她们三个是黑道至尊,是世界排名第一血魂宫的宫主。他们三个是黑道上公认的黑道王子,是世界排名第二嗜寒宫的宫主。他和她儿时相约十年见面。十年后,她们杀了她们的妹妹,她们和她(他)们结仇;他的不信任,他却换来她的一个巴掌,换来的是失去……他们最后的结果是分离,还是在一起!你们想知道为什么吗?那就点击进来看!