用lucene 搜索数据库主要分三步
1、第一步:拿出数据集
2、第二步:创建索引
3、第三步:搜索
第一步:
Java代码
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
第二步:
Java代码
Directory directory = FSDirectory.open(new File(buildIndexFilePath));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
IndexWriter indexWriter = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
while(resultSet.next()) {
Document document = new Document();
document.add(new Field("bankId", "" + resultSet.getString("BANK_ID"), Field.Store.YES , Field.Index.NO , Field.TermVector.NO));
document.add(new Field("bankName", "" + resultSet.getString("BANK_NAME"), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
document.add(new Field("isSupportPassword", "" + resultSet.getString("IS_SUPPORT_PASSWORD"), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_OFFSETS));
document.add(new Field("payType", "" + resultSet.getString("PAY_TYPE"), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
indexWriter.addDocument(document);
}
indexWriter.optimize();
indexWriter.close();
resultSet.close();
statement.close();
connection.close();
第三步:
Java代码
//查询结果
IndexReader indexReader = IndexReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
QueryParser queryParser = new QueryParser(Version.LUCENE_30, "bankName", analyzer);
Query query = queryParser.parse("中信银行");
TopScoreDocCollector collector = TopScoreDocCollector.create(1000 , false);
indexSearcher.search(query, collector);
ScoreDoc[] scoreDocs = collector.topDocs().scoreDocs;
int numTotalHits = collector.getTotalHits();
System.out.println("共检索到的数量:" + numTotalHits);
for(int i=0; i<scoreDocs.length; i++) {
Document resultDocument = indexSearcher.doc(scoreDocs[i].doc);
String str = resultDocument.get("bankId");
String str2 = resultDocument.get("bankName");
System.out.println("str: " + str + " <> " + str2);
}
三步完成后,可以将结果放到list或者其它集合中,然后再页面中显示!
再来一个spring 定时器入门例子,嘿嘿,
有机会可以 用来 及时追加 数据库索引.
关于lucene3.0的排序,我纠结了好久,最后通过以下代码完成,原理,就是将时间转化为字符串,完毕
Java代码
//按照时间的正序排列,如果SortField的第三个参数为true , 则为倒序
SortField sortField = new SortField("createDate", SortField.STRING, false);
Sort sort = new Sort ();
sort.setSort(sortField);
TopDocs topDocs = indexSearcher.search(query, null, 100, sort);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
分享到:
相关推荐
一共3个一个专业搜索公司关于lucene+solar资料(1)
2019/2/20 上午10'07关于Lucene的词典FST深入剖析 | 申艳超-博客第 1 页(共 19 页)2019/2/20 上午10'07关于Luce
一个关于lucene实例初学者入门的好东东
一个专业搜索公司关于lucene和solar资料,挺厚的,写的挺详细的,建议大家看看
一共3个,一个专业搜索公司关于lucene+solar资料(1)
一共3个,一个专业搜索公司关于lucene+solar资料(1)
这个为一个lucene3.5所写的程序例子,有助于刚入门的学习lucene的人,更快的的进入到lucene的学习中去。
lucene建立数据库索引的问题,在这里,把其中的一些问题补充说明,希望对大家有新的帮助,希望大家相互提出问题,相互学习,共同进步!!
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
基于lucene的文献垂直搜索技术是当今火热的技术
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
lucene5 这是我在学习lucene5时自己写的一个关于lucene5的示例程序,现在分享给所有喜欢Lucene的人。
基于新发布的Lucene3.5的学习,对部分模块的研究及学习心得。
基于Java的全文索引引擎.doc lucene测试代码.txt lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt ... 关于lucene2.0的创建、检索和删除功能的完整实现.doc weblucene.txt
lucene 近实时搜索 很清楚的解释了关于lucene近实时搜索的代码。很值得学习
主要是关于lucene站内搜索的技术代码,可以使用;按照需要进行代码修改。
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
个人关于lucene 3.5放入一些总结
关于lucene对数据库建立索引和进行查询。这方面的东西太少了。大家应该多上传一些资料。
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....