最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!!比如简历管理的系统,简历有 姓名、性别、年龄、职业、行业、自我描述、工作经历、教育经历……等等我的想法是,有一张 简历检索表,只有两个 字段,简历的主键和简历信息,在新增简历的时候,把简历的所有信息都存到 简历检索表的信息 字段里,那么在我检索的时候,只要用 LIKE 语句就能轻松实现全文检索,大家意下如何? 欢迎拍砖!!
解决方案 »
- 子类创建实例时调用父类构造函数的问题
- 新手问题,关于String里面"+"连接
- 帮帮小弟~! 感激ING....
- 输出结果的疑问?
- 如何用java实现几台计算机互相点对点的即时通讯?
- 能否学习Java?
- java的i/o支持同时对一文件进行读取并修改此文件吗?如何做
- 新手求解答
- 在JAVA中如何判断"2002-02-31"为合法日期(来者都有分呀)
- 我要用java做电费单据的打印,可是不知道如何设置printerJob的pageFormat为我要打印单据的页面格式,默认的总是A4的页面,请问如何解决??
- jtable已經有JTextField和JComboBox等的celleditor 如果想再用鼠標監聽這個table 該怎么做?
- 问个小问题
不过现在全文检索,比如lucene,并不是很复杂,何必自己鼓捣呢?
你的意思我也明白 把所有字段数据放到一个新的字段 然后LIKE吧?
不用 like 直接 keyname='' 最全文索引!
用like 检索一偏很大的文章也不见的会快啊...
我把代码贴上来
不知道是不是LZ想要的
import java.io.IOException;
import java.io.PrintWriter;import java.sql.Connection;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;import javax.servlet.*;
import javax.servlet.http.*;public class dosearch extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK"; public void init(ServletConfig config) throws ServletException {
super.init(config);
} public void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>dosearch</title></head>");
out.println("<body>");
request.setCharacterEncoding("gbk");
String search=request.getParameter("content");
search=search.trim();
String sql=null;
String[] lookup=search.split(" ");
ServletContext ctx=request.getSession().getServletContext();
//获取Web应用程序初始化参数
String url=ctx.getInitParameter("dbURL");
String driver=ctx.getInitParameter("jdbcDriver");
for(int i=0;i<lookup.length;i++){
//out.print(lookup[i]+"<br />");
sql=sql+"title like '%"+lookup[i].trim()+"%' or ";
sql=sql+"some_text like '%"+lookup[i].trim()+ "%' or ";
}
sql=sql.substring(4,sql.length()-3) ;
sql=sql+" order by id desc";
Connection conn;
Statement stmt;
ResultSet rs;
try{
Class.forName(driver);
conn=DriverManager.getConnection(url);
stmt=conn.createStatement();
sql="select * from test where "+sql;
//out.print(sql+"<br />");
//rs=stmt.executeQuery("select * from content where content like '反'");
rs=stmt.executeQuery(sql);
/*int count=rs.getRow();
if(count==0){
out.print(count);
}else{*/
while(rs.next()){
String title=rs.getString("title");
String content=rs.getString("some_text");
//out.print(content+" "+title+"<br />");
String title1=null;
String content2=null;
for(int i=0;i<lookup.length;i++){
title1 = title.replace(lookup[i],"<font color = red>"+lookup[i].trim()+"</font>");
//out.print(lookup[i]+"<br />");
//out.print(title1+"<br />");
content2 = content.replace(lookup[i],"<font color=red>"+lookup[i].trim()+"</font>");
//out.print(content2+"<br /><br /><br />");
}
out.print(title1+"<br />");
out.print(content2+"<br /><br /><br />");
}
// }
}catch(Exception ex){
out.print("<p align=center><font size=5 color=red>数据库访问出错!</font></p>"+ex.getMessage());
ex.printStackTrace();
}
out.println("</body></html>");
out.close();
}
}
数据库中两张表
content:id,content,title
test:id,some_text,title
like 会死人的 慢ing 顶下老大吧