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 myblob where contains(fblob,′"+s+"")>0";
rs=stmt.executeQuery(sql);
while(rs.next())
{
res.append(rs.getString("id")+"
"+rs.getString("fname")+"
————-");
}
}
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();
}
}
案例名称:Oracle二进制文档全文搜索Web应用
程序名称:BinSearcher.jsp
<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.sql.*"%>
<html>
<form action=""method=post>
<input type="text"name="so"><input type=submit value="search!">
</form>
<body>
<%
…request.setCharacterEncoding("GBK");
if(request.getParameter("so")==null)
{
return;
}
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 myblob where contains(fblob,′"+request.getParameter("so")+"")
>0";
rs=stmt.executeQuery(sql);
while(rs.next())
{
String a=rs.getString("id");
String b=rs.getString("fname");
out.print(a+"<br>"+b+"<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();
}
catch(SQLException ex)
{
out.print(ex.getMessage());
}
}
}
%>
</body>
</html>
在搜索栏中输入“大禹”,单击“search”按钮。
小结
本章介绍了Oracle全文搜索的原理和基本使用方法。Oracle的全文搜索技术非常强大,并不是几十页的内容可以讲透的。笔者在这里介绍了其核心和基础的知识,目的是便于读者迅速将其投入使用,开发工程项目。需要提示的是:在项目的后期维护中,最需要注意的是索引的分析和优化。本书限于篇幅没有讲解这部分知识,读者在做项目维护的过程中应考虑这一点。
思考与练习
1.Oracle全文搜索技术可以用于哪些工程实践?
2.使用JSP+Oracle 技术,开发一套基于Web的文档管理系统。