站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题用Lucene-1.3-final为网站数据库建立索引

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

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

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="685" border="0"> <tr> <td width="440"> 以下是看了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(); </td> <td width="235">
</td> </tr> </table>
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")+"
");
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")+"
");
// 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() {
}
}
</td> </tr> <tr>


↑返回目录
前一篇: jboss4安装测试
后一篇: Tomcat 5中的include中文问题