当前位置:首页 > 网络编程 > WEB编程 > JSP > 开发实例:JSP中实现全文检索

开发实例:JSP中实现全文检索

点击次数:23 次 发布日期:2008-11-22 13:29:35 作者:源代码网
源代码网推荐

全文检索一直都是web方面的关键技术,如何在浩如烟海的信息中找到自己想要的信息是人们最关心的。鼎鼎大名的GOOGLE就是一个很成功的例子,网络上的人们大部分都用GOOGLE来查找自己需要的内容。全文检索主要有两个技术指标:快速和精确。前一段时间做了一个新闻系统,老板要加上全文检索的功能,想了很久才用一个不太高明的方法实现了。现在分享一下,希望是抛砖引玉吧,如果大家有更好的办法请跟在后边:)

先介绍一下我的新闻系统:数据库里存新闻的基本信息,如标题,发布人,发布时间,主体新闻的文件名。新闻主体是html格式的静态页(第一是要提高速度,减少数据库的压力。第二是数据库处理大字符串的时候会有问题。)。全文检索的思路是:先从数据库里把所有的新闻检索出来,把主体新闻找到,然后通过io操作把主体新闻读到一个字符串中。再去掉多余的东西,象html标记什么的,再用正则表达式对这个字符串查找,如果找到符合条件的信息,就记录这条新闻。最后返回所有的符合条件的新闻显示给用户。

下面这段代码是输入查询条件的代码,查询关键字用”+”隔开:search.jsp

?

?

?

新闻搜索

?

?

?

?

?

?

?

???

?

?????

?

???

?

???

?

?????

?

?????

?

???

?

???

?

?????

?

???

 
输入查询关键字:

?

???????

?

???????

?

?????

?

???????       
源代码网推荐

?

??????? 说明:如果有多个查询条件,中间用+隔开。如:1+2+3+4...

?

?

?

?

下面的代码是全文检索主体javabean的代码:newsSearch.java

?

package NEWS;

?

import java.sql.*;

?

import java.lang.*;

?

import java.text.*;

?

import java.util.*;

?

import java.io.*;

?

import java.util.regex.*;

?

import DBstep.iDBManager2000;//数据库操作的bean

?

public class newsSearch {

?

? private String filePath=null;//主体新闻存放的目录

?

? private String keyWord=null;//查询关键字

?

? private Vector news = new Vector();//存放符合条件的结果

?

? public newsSearch() { }

?

? public void setFilePath(String s) {

?

??? this.filePath=s;

?

? }

?

? public void setKeyWord(String s) {

?

??? this.keyWord=s;

?

? }

?

? public Vector getResult() {

?

??? return news;

?

? }

?

? public void search() {

?

? //打开数据库

?

ResultSet result=null;

?

?? String mSql=null;

?

?? PreparedStatement prestmt=null;

?

?? DBstep.iDBManager2000 DbaObj=new DBstep.iDBManager2000();

?

?? DbaObj.OpenConnection();

?

?? try {

?

? //检索所有的新闻

?

?? mSql="select * from t_news_detail? order by release_time desc";

?

?? result=DbaObj.ExecuteQuery(mSql);

?

?? while(result.next())

?

?? {

?

??? String id=result.getString("id");

?

??? String title=result.getString("title");

?

??? String release_time=result.getString("release_time");

?

??? String news_type=result.getString("type");

?

??? String content=result.getString("content");

?

??? String man_add=result.getString("man_add");

?

????? //按行读文件

?

????? String trace=filePath+content+".html";

?

????? FileReader? myFileReader=new FileReader(trace);

?

??? BufferedReader myBufferedReader=new BufferedReader(myFileReader);

?

??? String myString=null;

?

??? String resultString=new String();

?

??? while((myString=myBufferedReader.readLine())!=null)

?

??? {?

?

???? resultString=resultString+myString;

?

???? }

?

????? //去掉多余字符

?

?? HtmlEncode.HtmlEncode Html=new HtmlEncode.HtmlEncode();//这个bean去掉多余的字符,新闻是自己生成的文件,可以尽量多的删除多余字符

?

123下一页
源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华