用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;
分享到:
相关推荐
《关于Lucene的词典FST深入剖析》这篇文章是由申艳超撰写的,主要探讨了Apache Lucene这个全文搜索引擎库中的一个关键数据结构——有限状态转换器(Finite State Transducer,简称FST)。FST在Lucene中被用于构建和...
在这个"一个关于lucene实例"的压缩包中,很可能是为了帮助初学者理解并掌握Lucene的基本用法和核心概念。 Lucene的主要功能包括文档的索引和搜索。在索引过程中,它能够分析文本,将文本分词,然后将这些词语转换为...
以下是关于Lucene的一些关键知识点: 1. **文本分析**:Lucene包含一个强大的分析器组件,能够将输入的文本分解为有意义的词语,去除停用词、标点符号,并对词汇进行词干提取和同义词扩展,以提高搜索效果。用户还...
### 关于Lucene和Solr的专业资料概览 #### 标题解读 - **标题**:“一个专业搜索公司关于Lucene和Solr资料” - 该标题表明这份资料是针对专业人士编写的,主要聚焦于Lucene和Solr这两款流行的信息检索系统。 ####...
在本文中,我们将探讨如何使用Lucene建立数据库索引,并分享一些在实践过程中的经验和教训。Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎。在创建索引时,需要注意以下关键点: 1. **资料的准确性**:...
本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对的方法:向上扩展(Scale-up)和向外...
根据给定文件信息,这里将详细介绍关于《Lucene in Action 第二版》书籍的知识点。这本书是关于Java Lucene教程的,主要面向开发者学习使用Lucene进行搜索引擎开发。 ### 书名知识点: 《Lucene in Action 第二版...
Lucene.NET 2.9.2 是一个基于Apache Lucene的全文检索库,适用于.NET Framework。这个库提供了高效、可扩展的全文检索功能,适用于各种应用程序中的数据搜索需求。在这个实例中,我们将深入探讨如何使用Lucene.NET ...
关于Lucene的详细知识点: 1. **索引构建**:Lucene首先需要对文本数据进行索引,这个过程包括分词、词干提取、去除停用词等预处理步骤,然后将这些经过处理的词项存储在倒排索引中,以便快速查找。 2. **文档表示...
博文链接中提到的是一个关于Lucene3的博客文章,可能详细介绍了如何在实际项目中使用Lucene进行全文检索。博主"chinaxxren"在ITEYE上分享了这篇博客,虽然具体内容未在描述中给出,但我们可以推测博主可能讲解了以下...
在这个压缩包中,我们收集了一系列关于Lucene的学习资料,包括文档和书籍,旨在帮助你深入了解并掌握这一技术。 首先,我们来看《lucene入门体会.doc》,这是作者在学习Lucene过程中的心得体会。通过这份文档,你...
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
doc.add(new Field("content", "这是关于Lucene索引器的一个实例教程。", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档 indexWriter.addDocument(doc); // 关闭索引器 indexWriter.close(); } }...
以下是关于Lucene Field的一些关键知识点: 1. **Field类型**:Lucene中的Field有多种类型,如TextField、StringField、NumericField等。TextField适合全文检索,StringField则用于存储不可变的非全文数据,...
本书不仅仅是一本关于如何使用Lucene的指南,它还提供了一个关于信息检索的总体知识背景,包括文本索引和搜索的具体细节。如果读者对信息检索或文本搜索有具体的需求,这本书将提供足够的信息帮助你实现成功地完成...
doc.add(new TextField("content", "这是一个关于Lucene的初级示例", Field.Store.YES)); ``` 4. **索引文档**:使用`addDocument()`方法将文档添加到索引。 ```java indexWriter.addDocument(doc); ``` 5. **...
了解了这些基本原理后,我们可以通过阅读提供的链接(http://blog.csdn.net/nupt123456789/article/details/10666105)获取更多关于Lucene删除索引的实战技巧和注意事项。同时,`HelloLucene_delete`这个压缩包文件...
在Lucene的上下文中,`META-INF`可能包含了关于Lucene组件或者配置的信息。 而`org`目录可能代表了源代码或编译后的类文件组织结构,按照Java的包命名规范,`org`下可能包含了一系列与Lucene相关的子包,如`org....