最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!!比如简历管理的系统,简历有 姓名、性别、年龄、职业、行业、自我描述、工作经历、教育经历……等等我的想法是,有一张 简历检索表,只有两个 字段,简历的主键和简历信息,在新增简历的时候,把简历的所有信息都存到 简历检索表的信息 字段里,那么在我检索的时候,只要用 LIKE 语句就能轻松实现全文检索,大家意下如何? 欢迎拍砖!!

解决方案 »

  1.   

    哦!是一个做法。
    不过现在全文检索,比如lucene,并不是很复杂,何必自己鼓捣呢?
      

  2.   

    纵表转横表 然后LIKE。
    你的意思我也明白 把所有字段数据放到一个新的字段 然后LIKE吧?
      

  3.   

    最近就在做,,用数据库的反向索引吧!!!
    不用 like   直接 keyname=''  最全文索引!
      

  4.   

    如果字段多或者字段内容多的时候呢?
    用like 检索一偏很大的文章也不见的会快啊...
      

  5.   

    你这样考虑不是很周到, 创建简历可能影响不是很大, 但是如果你做更新维护简历的时候,还要更新这个简历索引表,这样代价应该挺大的。还是用Lucene比较好,简单又好用
      

  6.   

    我有个简单的想法
     我把代码贴上来
     不知道是不是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
      

  7.   

    大家有没有 浅显的语言来 说明lucene的文章
      

  8.   

    一旦简历越来越多,用like的方法,效率上是个很大的问题
      

  9.   


    like 会死人的 慢ing 顶下老大吧
      

  10.   

    支持。。like 是数据库性能杀手!!