📄 contextlistener.java
字号:
package com.ht.lucenedemo;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.*;
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.QueryParser;
import com.ht.gis.service.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public class ContextListener extends HttpServlet implements ServletContextListener, ServletContextAttributeListener {
private static Log log = LogFactory.getLog("WebGIS");
private ResultSet rs = null;
private DataSource ds = null;
private Statement stmt = null;
private Connection conn = null;
public void contextInitialized(ServletContextEvent sce){
try{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/myoracle");
conn = ds.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery("select id,name from cas_cn_nplap");
Analyzer luceneAnalyzer = new StandardAnalyzer();
Directory indexDir = new RAMDirectory("D:\\luceneIndex");
IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
long startTime = new java.util.Date().getTime();int i = 0;
while (rs.next()) {
Document document = new Document();
document.add(Field.Text("id", String.valueOf(rs.getLong("id"))));
document.add(Field.Text("contents", rs.getString("name")));
indexWriter.addDocument(document);i++;
}
indexWriter.optimize();
indexWriter.close();
long endTime = new java.util.Date().getTime();
log.debug("建立索引时间: " + (endTime - startTime) + " 毫秒");
log.debug("读取数据库记录数: " + i);
rs.close();
stmt.close();
conn.close();
//TxtSearcher.main(new String[2]);
}catch(Exception e){e.printStackTrace();}
}
public void search()throws Exception{
String queryStr = "福田";
File indexDir = new File("D:\\luceneIndex");
FSDirectory directory = FSDirectory.getDirectory(indexDir, false);
IndexSearcher searcher = new IndexSearcher(directory);
if (!indexDir.exists()) {
log.debug("The Lucene index is not exist");
return;
}
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("contents" , analyzer);
long startTime = new java.util.Date().getTime();
Query query = parser.parse(queryStr);
//Term term = new Term("contents", queryStr.toLowerCase());
//TermQuery query = new TermQuery(term);
Hits hits = searcher.search(query);
for (int i = 0; i < hits.length(); i++) {
Document document = hits.doc(i);
log.debug("File: " + document.get("id"));
}
long endTime = new java.util.Date().getTime();
log.debug("搜索时间: " + (endTime - startTime)+" 毫秒");
}
public void contextDestroyed(ServletContextEvent sce) {
}
public void attributeAdded(ServletContextAttributeEvent scab) {
}
public void attributeRemoved(ServletContextAttributeEvent scab) {
}
public void attributeReplaced(ServletContextAttributeEvent scab) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -