`
vincent_com
  • 浏览: 43928 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

关于Lucene

 
阅读更多
用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深入剖析-申艳超1

    《关于Lucene的词典FST深入剖析》这篇文章是由申艳超撰写的,主要探讨了Apache Lucene这个全文搜索引擎库中的一个关键数据结构——有限状态转换器(Finite State Transducer,简称FST)。FST在Lucene中被用于构建和...

    一个关于lucene实例

    在这个"一个关于lucene实例"的压缩包中,很可能是为了帮助初学者理解并掌握Lucene的基本用法和核心概念。 Lucene的主要功能包括文档的索引和搜索。在索引过程中,它能够分析文本,将文本分词,然后将这些词语转换为...

    关于lucene的小常识

    以下是关于Lucene的一些关键知识点: 1. **文本分析**:Lucene包含一个强大的分析器组件,能够将输入的文本分解为有意义的词语,去除停用词、标点符号,并对词汇进行词干提取和同义词扩展,以提高搜索效果。用户还...

    一个专业搜索公司关于lucene和solar资料

    ### 关于Lucene和Solr的专业资料概览 #### 标题解读 - **标题**:“一个专业搜索公司关于Lucene和Solr资料” - 该标题表明这份资料是针对专业人士编写的,主要聚焦于Lucene和Solr这两款流行的信息检索系统。 ####...

    关于lucene建立数据库索引的更新说明

    在本文中,我们将探讨如何使用Lucene建立数据库索引,并分享一些在实践过程中的经验和教训。Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎。在创建索引时,需要注意以下关键点: 1. **资料的准确性**:...

    计算机专业外文翻译(lucene相关)

    本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对的方法:向上扩展(Scale-up)和向外...

    lucene in action 第二版

    根据给定文件信息,这里将详细介绍关于《Lucene in Action 第二版》书籍的知识点。这本书是关于Java Lucene教程的,主要面向开发者学习使用Lucene进行搜索引擎开发。 ### 书名知识点: 《Lucene in Action 第二版...

    lucene.net 2.9.2 实现索引生成,修改,查询,删除实例

    Lucene.NET 2.9.2 是一个基于Apache Lucene的全文检索库,适用于.NET Framework。这个库提供了高效、可扩展的全文检索功能,适用于各种应用程序中的数据搜索需求。在这个实例中,我们将深入探讨如何使用Lucene.NET ...

    lucene的jar包,欢迎下载

    关于Lucene的详细知识点: 1. **索引构建**:Lucene首先需要对文本数据进行索引,这个过程包括分词、词干提取、去除停用词等预处理步骤,然后将这些经过处理的词项存储在倒排索引中,以便快速查找。 2. **文档表示...

    lucene3 例子

    博文链接中提到的是一个关于Lucene3的博客文章,可能详细介绍了如何在实际项目中使用Lucene进行全文检索。博主"chinaxxren"在ITEYE上分享了这篇博客,虽然具体内容未在描述中给出,但我们可以推测博主可能讲解了以下...

    lucene 数据库

    在这个压缩包中,我们收集了一系列关于Lucene的学习资料,包括文档和书籍,旨在帮助你深入了解并掌握这一技术。 首先,我们来看《lucene入门体会.doc》,这是作者在学习Lucene过程中的心得体会。通过这份文档,你...

    Lucene4.X 第十五讲-Lucene高级进阶

    本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...

    Lucene索引器实例

    doc.add(new Field("content", "这是关于Lucene索引器的一个实例教程。", Field.Store.YES, Field.Index.ANALYZED)); // 添加文档 indexWriter.addDocument(doc); // 关闭索引器 indexWriter.close(); } }...

    一步一步跟我学习Lucene源码之lucene的各种Field

    以下是关于Lucene Field的一些关键知识点: 1. **Field类型**:Lucene中的Field有多种类型,如TextField、StringField、NumericField等。TextField适合全文检索,StringField则用于存储不可变的非全文数据,...

    lucene实战第二版(最新)

    本书不仅仅是一本关于如何使用Lucene的指南,它还提供了一个关于信息检索的总体知识背景,包括文本索引和搜索的具体细节。如果读者对信息检索或文本搜索有具体的需求,这本书将提供足够的信息帮助你实现成功地完成...

    Lucene初探,一个初级的LuceneDemo

    doc.add(new TextField("content", "这是一个关于Lucene的初级示例", Field.Store.YES)); ``` 4. **索引文档**:使用`addDocument()`方法将文档添加到索引。 ```java indexWriter.addDocument(doc); ``` 5. **...

    Lucene之删除索引

    了解了这些基本原理后,我们可以通过阅读提供的链接(http://blog.csdn.net/nupt123456789/article/details/10666105)获取更多关于Lucene删除索引的实战技巧和注意事项。同时,`HelloLucene_delete`这个压缩包文件...

    lucene 小资源

    在Lucene的上下文中,`META-INF`可能包含了关于Lucene组件或者配置的信息。 而`org`目录可能代表了源代码或编译后的类文件组织结构,按照Java的包命名规范,`org`下可能包含了一系列与Lucene相关的子包,如`org....

Global site tag (gtag.js) - Google Analytics