大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 操作系统 -> Web服务器 -> 开发实例:JSP中实现全文检索

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

时间: 2021-07-31 作者:daque

jsp中的全文字笔迹检验索全文字笔迹检验索从来都是web上面的要害本领,怎样在不计其数的消息中找到本人想要的消息是人们最关怀的。赫赫有名的google即是一个很胜利的例子,搜集上的人们大局部都用google来搜索本人须要的实质。全文字笔迹检验索重要有两个本领目标:赶快和透彻。前一段功夫做了一个消息体例,东家要加上全文字笔迹检验索的功效,想了很久才用一个不太巧妙的本领实行了。此刻瓜分一下,蓄意是举一反三吧,即使大师有更好的方法请跟在后边:)先引见一下我的消息体例:数据库里存消息的基础消息,如题目,颁布人,颁布功夫,主体消息的文献名。消息主体是html方法的静态页(第一是要普及速率,减少量据库的压力。第二是数据库处置大字符串的功夫会有题目。)。全文字笔迹检验索的思绪是:先从数据库里把一切的消息检索出来,把主体消息找到,而后经过io操纵把主体消息读到一个字符串中。再去掉过剩的货色,象html标志什么的,再用正则表白式对这个字符串搜索,即使找到适合前提的消息,就记载这条消息。结果归来一切的适合前提的消息表露给用户。底下这段代码是输出查问前提的代码,查问要害字用”+”隔绝:search.jsp<html><head><link rel="stylesheet" href="css/style3.css"><title>消息探求</title><script language="javascript">      function subform(){    if (document.zl_form.keyword.value=="") {  alert("请输出要害字!");  document.zl_form.keyword.focus();  return false; }      return true;       }</script></head><body bgcolor="#f0f6e2"><form name="zl_form"  target="_new" method="post" action="aftsearch.jsp" onsubmit="return subform()">  <table width="600" bgcolor="#f0f6e2">    <tr>       <td colspan="4" height="10">  </td>    </tr>    <tr>       <td width="14%">输出查问要害字:</td>      <td align="left" width="65%">         <input size="50" type="text" name="keyword" style="font-size: 9pt">        <input type="submit" name="submit" value="探求" style="font-size: 9pt">      </td>     </tr>    <tr>       <td colspan="2" height="9" align="left">              <br>        <font color="red" size="+1">证明:即使有多个查问前提,中央用</font><font size="+2">+</font><font color="red" size="+1">隔绝。如:1+2+3+4...</font></td>    </tr></table> </form> </body> </html> 底下的代码是全文字笔迹检验索主体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去掉过剩的字符,消息是本人天生的文献,不妨尽管多的简略过剩字符 resultstring=html.textencode(resultstring);    myfilereader.close();   //掏出查问要害字   pattern p=null;   matcher m=null;   p = pattern.compile("\\+");   string[] a=p.split(keyword);//把要害字用+划分   //全文字笔迹检验索   string searchresult="1";//检索截止   int i;   for(i=0;i<a.length;i++)//逐一按要害字搜索,即使一切的要害字都适合,则记载截止  {   p = pattern.compile(a[i].tostring());   m = p.matcher(resultstring);   if (!(m.find())) {    searchresult="0";      }     }  //记载适合前提的消息       if(searchresult.equals("1"))    {   news resultnews=new news();//寄存截止的类,和数据库的构造基础普遍   resultnews.content=content;   resultnews.release_time=release_time;   resultnews.type=news_type;   resultnews.man_add=man_add;   resultnews.title=title;   news.addelement(resultnews);//结果的截止集,要归来存户端   }   }   //封闭数据库  dbaobj.closeconnection() ;      }catch(exception e){        system.out.println(e.tostring());      }  } public class news { //寄存截止的类    string content;    string release_time;      string type;      string man_add;      string title;    public string getcontent() { return this.content; }      public string gettitle() { return this.title; }    public string gettime() { return this.release_time; }      public string gettype() { return this.type; }    public string getman_add() { return this.man_add; }  }}底下的代码是挪用的:aftsearch.jsp<%@ page contenttype="text/html; charset=utf8" %><%@ page import="java.util.*" %><% request.setcharacterencoding("gb2312");  string keyword=request.getparameter("keyword");  //接受要害字 string trace=getservletcontext().getrealpath("/")+"xwxx\\news\\";//主体消息寄存路途 news.newssearch newssearch=new news.newssearch();//初始化检索的bean newssearch.setfilepath(trace);//树立主体消息路途 newssearch.setkeyword(keyword);//树立要害字 newssearch.search();//检索 vector news=newssearch.getresult();//取到截止%><html><head><title>消息探求</title><meta http-equiv="cache-control" content="no-cache"><link rel="stylesheet" href="../css/style3.css"><script language="javascript"> function open_window(id){  locat="./news/"+id+".html"; window.open(locat,"new","width=550,height=500 ,scrollbars=yes")}</script></head><object id=hh2 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"> <param name="command" value="maximize"></object><body bgcolor=#f5faf3 leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><script>hh2.click();</script><table width="621" border="0">  <tr>    <td colspan=5>                                                 </font>    </td>  </tr>  <tr valign="middle">    <td width="45%" height="22">      <div align="center" class = "t_header">标 题</div>    </td>    <td width="15%" height="22">      <div align="center" class = "t_header">类 别</div>    </td>      <td width="15%" height="22">      <div align="center" class = "t_header">发 布 人</div>    </td>    <td width="25%" height="22">      <div align="center" class = "t_header">发 布 时 间</div>    </td>  </tr>  <tr bgcolor="#b7d79f" valign="middle">    <td colspan="4" height="2"></td>  </tr></table> <table width="624" border="0" bordercolor="#99ccff"><% string color=null; int j=0; if(!(news.size()==0)) { for (int i = 0; i < news.size(); i++) { j++; news.newssearch.news  mynews=(news.newssearch.news)news.get(i);  if(i%2==0)  { color="#f5faf3"; }  else { color="#dbf7ed";   }%>            <tr  bgcolor = "<%=color%>">             <td width="45%" height="20">             <img src="http://www.okasp.com/techinfo/images/dot.gif" align = "absmiddle"><a href="#"  onclick="open_window(<%=mynews.getcontent()%>)"> <%=mynews.gettitle()%></a></td>                     <td width="15%" height="20" align="center"><%=mynews.gettype()%>             </td>             <td width="15%" height="20" align="center"><%=mynews.getman_add()%>             </td>             <td width="25%" height="20" align="center"><%=mynews.gettime()%>             </td>          </tr><% } } else{ out.println("抱歉,没有探求到您要搜索的消息");}  //和最前边的else对应,确定能否有记载 %>                  <tr bgcolor="#b7d79f">    <td colspan="4" height="2"></td>  </tr>             <tr>             <td colspan=4><p align=right>               </td>             </tr>       </table><p align=center>                共探求到消息 <%=j%> 条  </body></html>0xmlscript.src="http://guide.pconline.com.cn/comment/commentservice_js.jsp?"+(new date()); 0xmlscript.src="http://guide.pconline.com.cn/comment/commentservice_js.jsp?"+(new date()); 0xmlscript.src="http://guide.pconline.com.cn/comment/commentservice_js.jsp?"+(new date()); 0xmlscript.src="http://guide.pconline.com.cn/comment/commentservice_js.jsp?"+(new date()); 0xmlscript.src="http://guide.pconline.com.cn/comment/commentservice_js.jsp?"+(new date()); (根源:csdn)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.