如果要构建一个全文检索系统,并且文章全部保存在数据库中,那下面的例子会有很大的帮助.
import java.sql.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
//Lucene为数据库建索引实例
public class LuceneDB {
Connection conn = null;
//操作 Oracle 数据库
private final String URL = "jdbc:oracle:thin:@localhost:1521:ORCL";
public LuceneDB(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//Oracle连接用户名:scott 密码:tiger
conn = DriverManager.getConnection(URL,"scott","tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public Connection getConnection(){
return this.conn;
}//获取数据库连接
public void close(){
try {
this.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}//关闭数据库连接
public static void main(String args[]) throws Exception {
LuceneDB lucene = new LuceneDB();
IndexWriter writer = null;
Connection conn = lucene.getConnection();
String sql = "SELECT * FROM student";
writer = new IndexWriter("D:\\index",new StandardAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
Document doc = new Document();
//为字段 sname 建索引
doc.add(new Field("sname",rs.getString("sname"),Field.Store.YES,Field.Index.ANALYZED));
writer.addDocument(doc);
}
rs.close(); //关闭记录集
conn.close(); //关闭数据库连接
writer.optimize(); //索引优化
writer.close(); //关闭读写器
Directory dir = FSDirectory.getDirectory("D:\\index");
IndexSearcher searcher = new IndexSearcher(dir);
//选择姓名中包含张字的记录
QueryParser parser = new QueryParser("sname", new StandardAnalyzer());
Query query = parser.parse("张");
TopDocs topDocs = searcher.search(query, 100);
ScoreDoc[] hits = topDocs.scoreDocs;
for(int i=0;i< hits.length;i++){
int DocId = hits.doc;
Document doc = searcher.doc(DocId);
System.out.println(doc.get("sname")); //张立
}
}
}
其中,Student表的内容如下:
SNO SNAME SS SAGE SDEPT
----- ---------- -- ---------- ----------
95001 李勇 男 20 CS
95002 刘晨 女 19 IS
95003 王敏 女 18 MA
95004 张立 男 19 IS
分享到:
相关推荐
用lucene对数据库建立索引及搜索.doc
关于lucene对数据库建立索引和进行查询。这方面的东西太少了。大家应该多上传一些资料。
在Eclipse环境中运用java,Lucene建索引及查询关键字
lucene建立数据库索引的问题,在这里,把其中的一些问题补充说明,希望对大家有新的帮助,希望大家相互提出问题,相互学习,共同进步!!
关于Lucene对数据操作,详细信息请见文档
lucene与sqlserver数据库实现索引的简单实例lucene与sqlserver数据库实现索引的简单实例
这是一个结合Lucene 对数据库索引的一个真正的实例。它反应了Lucene 的基础原理
lucene3针对数据库索引操作,示例源码+解读。
用Lucene.net对数据库建立索引及搜索
Lucene_索引数据库.doc
Lucene3总体图_建索引_查询_数据库索引[参考].pdf
Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,...
这是我学LUCENE索引数据库表并且搜索相关字段的时期整理出来的几个不错的资料,我觉得里面总有一款会适合你,而且你所需要知道的技术里面基本上都是涵盖的,所以可以当作教材或者参考手册使用。
对初学使用dotlucent作站...利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是用VS.NET2008开发的。 应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。
为了快速查询,加快查询速度,减少与数据库交互,经常需要用到lucene实现创建索引和查询
NULL 博文链接:https://gaojunwei.iteye.com/blog/1842881
编写对索引库的搜索程序(看lucene文档),通过对lucene的索引库的查找,你可以快速找到对应记录的ID
lucene数据库索引.txt 新闻系统全文检索的思绪.txt lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用...