`
JavaStudyEye
  • 浏览: 80626 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

又是轮子(不过是自备): lucene3.0搜索数据库(最简单形式)

阅读更多
用lucene 搜索数据库主要分三步
1、第一步:拿出数据集
2、第二步:创建索引
3、第三步:搜索



第一步:
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();


第二步:
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();


第三步:

			//查询结果
			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的排序,我纠结了好久,最后通过以下代码完成,原理,就是将时间转化为字符串,完毕
//按照时间的正序排列,如果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;



分享到:
评论

相关推荐

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    Lucene3.0全文信息检索

    **Lucene 3.0 全文信息检索** Lucene 是一个由Apache软件基金会4 Jakarta项目组开发的开源全文检索引擎工具包。自1999年发布以来,Lucene 已经发展成为Java世界中最为广泛使用的全文检索库,为开发者提供了构建高...

    lucene3.0核心jar包

    这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年,为当时的开发人员提供了构建全文搜索引擎的基础框架。 在 Lucene 3.0 中,以下几个关键知识点值得关注: 1. **索引结构**:Lucene 使用倒排...

    lucene3.0资料包

    虽然Lucene3.0本身不直接支持分布式搜索,但可以通过Solr或Elasticsearch等基于Lucene的解决方案实现大规模集群部署,满足高并发和大数据量的检索需求。 10. **API与文档**: Lucene3.0提供了详尽的Java API,...

    lucene 3.0 API 中文帮助文档 chm

    lucene 3.0 API中文帮助,学习的人懂得的

    lucene3.0庖丁+索引搜索程序

    《深入剖析Lucene3.0:庖丁解牛与索引搜索实践》 在IT行业中,搜索引擎技术扮演着至关重要的角色,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene3.0版本,结合“庖丁解...

    Lucene3.0之查询类型详解

    - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较低。 - **索引查询**:基于预构建的索引结构,能够快速找到匹配的文档,是Lucene的主要查询方式。 2. **理论模型**: - **布尔模型**:基于集合论和...

    Lucene 3.0 原理与代码分析完整版

    《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...

    lucene 2.0 api以及lucene 3.0 api

    **Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...

    Lucene 3.0 原理

    6. **搜索优化**:Lucene 3.0 在搜索性能上做了很多优化,如位图过滤(BitSet)用于快速排除不相关的文档,跳跃表(Skip List)加速跳过低得分文档,以及缓存机制来提高后续查询的速度。 7. **多线程支持**:为了...

    Lucene3.0 使 用 教 程

    【Lucene3.0 使用教程】是针对Java开发者的一个指南,旨在教授如何利用Apache Lucene 3.0.1版本实现全文检索功能。Lucene是一个高性能、可伸缩的开源全文检索库,它提供了文本分析、索引创建、文档检索等核心功能。...

    lucene3.0 分词器

    lucene3.0 中文分词器, 庖丁解牛

    lucene3.0 实例

    在 Lucene 3.0 版本中,虽然已经相对较旧,但仍然包含了基本的搜索引擎功能,适用于简单或特定场景的搜索需求。在这个实例中,我们将探讨如何在 JDK 1.5 和 Lucene 3.0 的环境下构建和运行一个简单的搜索引擎。 ...

    lucene3.0 search

    《深入解析Lucene 3.0搜索技术》 在信息技术高速发展的今天,搜索引擎已经成为人们获取信息、解决问题的重要工具。作为开源全文检索库的代表,Apache Lucene为开发者提供了强大的文本检索功能,使得构建高效、精准...

    lucene3.0使用介绍及实例

    以下是一个简单的Lucene 3.0索引和搜索的Java示例: ```java import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document....

    Lucene3.0入门实例含jar包

    **Lucene 3.0 入门实例及关键知识点** ...总之,Lucene 3.0 入门实例提供了理解全文搜索引擎工作原理的基础,通过实践,开发者能够熟练掌握如何在自己的应用程序中集成和利用 Lucene 实现高效、精准的文本搜索功能。

Global site tag (gtag.js) - Google Analytics