最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!该怎么解决
最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!!
最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!!
比如简历管理的系统,简历有 姓名、性别、年龄、职业、行业、自我描述、工作经历、教育经历……等等
我的想法是,有一张 简历检索表,只有两个 字段,简历的主键和简历信息,在新增简历的时候,把简历的所有信息都存到 简历检索表的信息 字段里,那么在我检索的时候,只要用 LIKE 语句就能轻松实现全文检索,大家意下如何? 欢迎拍砖!!
------解决方案--------------------
学习下
------解决方案--------------------
哦!是一个做法。
不过现在全文检索,比如lucene,并不是很复杂,何必自己鼓捣呢?
------解决方案--------------------
纵表转横表 然后LIKE。
你的意思我也明白 把所有字段数据放到一个新的字段 然后LIKE吧?
------解决方案--------------------
------解决方案--------------------
进来学习学习
------解决方案--------------------
最近就在做,,用数据库的反向索引吧!!!
不用 like 直接 keyname='' 最全文索引!
------解决方案--------------------
很好。
不是说你这个方法很好,也没有说他不好的意思。我想说编程需要一些小聪明,需要一些自己的想法。哪怕他是错的。不好的。
------解决方案--------------------
顶
------解决方案--------------------
如果字段多或者字段内容多的时候呢?
用like 检索一偏很大的文章也不见的会快啊...
------解决方案--------------------
你这样考虑不是很周到, 创建简历可能影响不是很大, 但是如果你做更新维护简历的时候,还要更新这个简历索引表,这样代价应该挺大的。还是用Lucene比较好,简单又好用
------解决方案--------------------
我有个简单的想法
我把代码贴上来
不知道是不是LZ想要的
最简单的全文检索 实现方式 哇哈哈! 欢迎拍砖!!
比如简历管理的系统,简历有 姓名、性别、年龄、职业、行业、自我描述、工作经历、教育经历……等等
我的想法是,有一张 简历检索表,只有两个 字段,简历的主键和简历信息,在新增简历的时候,把简历的所有信息都存到 简历检索表的信息 字段里,那么在我检索的时候,只要用 LIKE 语句就能轻松实现全文检索,大家意下如何? 欢迎拍砖!!
------解决方案--------------------
学习下
------解决方案--------------------
哦!是一个做法。
不过现在全文检索,比如lucene,并不是很复杂,何必自己鼓捣呢?
------解决方案--------------------
纵表转横表 然后LIKE。
你的意思我也明白 把所有字段数据放到一个新的字段 然后LIKE吧?
------解决方案--------------------
------解决方案--------------------
进来学习学习
------解决方案--------------------
最近就在做,,用数据库的反向索引吧!!!
不用 like 直接 keyname='' 最全文索引!
------解决方案--------------------
很好。
不是说你这个方法很好,也没有说他不好的意思。我想说编程需要一些小聪明,需要一些自己的想法。哪怕他是错的。不好的。
------解决方案--------------------
顶
------解决方案--------------------
如果字段多或者字段内容多的时候呢?
用like 检索一偏很大的文章也不见的会快啊...
------解决方案--------------------
你这样考虑不是很周到, 创建简历可能影响不是很大, 但是如果你做更新维护简历的时候,还要更新这个简历索引表,这样代价应该挺大的。还是用Lucene比较好,简单又好用
------解决方案--------------------
我有个简单的想法
我把代码贴上来
不知道是不是LZ想要的
- Java code
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(); } }