用Lucene-1.3-final为网站数据库建立索引

以下是看了lnboy写的《用lucene建立大富翁论坛的全文检索》后写的测试代码。
 
为数据库cwb.mdb建立全文索引的indexdb.jsp 

<%@ page import ="org.apache.lucene.analysis.standard.*" %>  
<%@ page import="org.apache.lucene.index.*" %> 
<%@ page import="org.apache.lucene.document.*" %> 
<%@ page import="lucene.*" %> 
<%@ page contentType="text/html; charset=GBK" %> 
<% 
      long start = System.currentTimeMillis(); 
      String aa=getServletContext().getRealPath("/")+"index";    
      IndexWriter writer = new IndexWriter(aa, new StandardAnalyzer(), true); 
    try { 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

String url = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}
       ;DBQ=d:\\Tomcat 5.0\\webapps\\zz3zcwbwebhome\\WEB-INF\\cwb.mdb"; 
      Connection conn = DriverManager.getConnection(url); 
      Statement stmt = conn.createStatement(); 
      ResultSet rs = stmt.executeQuery( 
          "select Article_id,Article_name,Article_intro from Article"); 
      while (rs.next()) { 
             writer.addDocument(mydocument.Document(rs.getString("Article_id"),
                rs.getString("Article_name"),rs.getString("Article_intro"))); 
      } 
      rs.close(); 
      stmt.close(); 
      conn.close(); 
  
      out.println("索引创建完毕");    
      writer.optimize(); 
      writer.close(); 
      out.print(System.currentTimeMillis() - start); 
      out.println(" total milliseconds"); 

    } 
    catch (Exception e) { 
      out.println(" 出错了 " + e.getClass() + 
                         "\n 错误信息为: " + e.getMessage()); 
    } 
 %> 

用于显示查询结果的aftsearch.jsp 
<%@ page import="org.apache.lucene.search.*" %> 
<%@ page import="org.apache.lucene.document.*" %> 
<%@ page import="lucene.*" %> 
<%@ page import = "org.apache.lucene.analysis.standard.*" %>  
<%@ page import="org.apache.lucene.queryParser.QueryParser" %> 
<%@ page contentType="text/html; charset=GBK" %> 
<% 
    String keyword=request.getParameter("keyword"); 
     keyword=new String(keyword.getBytes("ISO8859_1"));  
      out.println(keyword); 
   try { 
       String aa=getServletContext().getRealPath("/")+"index";    
      Searcher searcher = new IndexSearcher(aa); 
      Query query = QueryParser.parse(keyword, "Article_name", new StandardAnalyzer()); 
     
      out.println("正在查找: " + query.toString("Article_name")+"<br>"); 
      Hits hits = searcher.search(query); 
      System.out.println(hits.length() + " total matching documents"); 
      java.text.NumberFormat format = java.text.NumberFormat.getNumberInstance(); 
      for (int i = 0; i < hits.length(); i++) { 
        //开始输出查询结果 
        Document doc = hits.doc(i); 
        out.println(doc.get("Article_id")); 
        out.println("准确度为:" + format.format(hits.score(i) * 100.0) + "%"); 
        out.println(doc.get("Article_name")+"<br>"); 
       // out.println(doc.get("Article_intro")); 
      } 
    }catch (Exception e) { 
      out.println(" 出错了 " + e.getClass() +"\n 错误信息为: " + e.getMessage()); 
    } 
%> 

辅助类: 
package lucene; 
import org.apache.lucene.document.Document; 
import org.apache.lucene.document.Field; 
import org.apache.lucene.document.DateField; 

public class mydocument { 
public static Document Document(String Article_id,String Article_name,String Article_intro){ 
     Document doc = new Document(); 
      doc.add(Field.Keyword("Article_id", Article_id)); 
      doc.add(Field.Text("Article_name", Article_name)); 
      doc.add(Field.Text("Article_intro", Article_intro)); 
      return doc; 
  } 
  public mydocument() { 
  } 
}

AddThis Social Bookmark Button

相关文档(Relevant Entries)
Lucene 基础指南
Beef up Web search applications with Lucene
Compass--在Lucene之上作了什么增强?
Lucene基本使用介绍
为lucene加入简单中文分词
用Lucene检索数据库
在应用中加入全文检索功能——基于Java的全文索引引擎Lucene简介
Lucene全文检索实践
Posted on February 13, 2007 3:02 PM | | | Comments (0) | | TrackBacks (0)

引用地址(TRACKBACKS)
 
TrackBack URL for this entry:
http://www.wujianrong.com/mt-tb.cgi/4599

发布评论(ADD YOUR COMMENTS)
 
感谢您参与评论;发表您的意见时请保持文章的相关性;不相关的或是单纯宣传的内容可能会被删掉。您的E-mail只是用来确认您发表的文章,不会出现在网页上。
Please keep your comments relevant to this blog entry. Email addresses are never displayed, but they are required to confirm your comments.

称呼(Name):      记住我的个人信息(Remember)
邮箱(Email):
网址(URL):
评论(Add your comments):

相关内容
广告计划