`
yuhaibo6646737
  • 浏览: 16407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

学习lucene应用简单实例

阅读更多
1.搭建开发环境
Lucene-analyzers-3.0.1.jar
Lucene-core-3.0.1.jar
Lucene-highlighter-3.0.1.jar
Lucene-memory-3.0.1.jar
IKAnalyzer3.2.0Stable.jar //修补包
说明: 本IK分词器只把支持当前Lucene3.0版本,不支持以前的版本.

2.最简单的HelloWorld演示程序
public class HelloWorld {
static Directory dir = null;// 全局索引库存放位置变量
static Analyzer analyzer = null;// 全局分词器变量
// 静态实例化全局变量
static {
try {
dir = FSDirectory.open(new File("./indexDir"));
analyzer = new StandardAnalyzer(Version.LUCENE_30);// 使用最简单的内置分词器
} catch (IOException e) {
throw new RuntimeException(e);
}
}

3.创建索引
@Test
public void creatIndex() {
// 模拟数据库搜索出的一条记录
Article article = new Article();
article.setId(1l);
article.setTitle("现在主要是考查搜索");
article.setContent("现在正在考查搜索,包括BBS,BLOG等.");
// article--->Document对象的转换
Document doc = LuceneUtils.article2Document(article);
try {
RAMDirectory ramDir = new RAMDirectory(dir);// 索引库目录读入内存中生成一份虚拟目录(注:前提是磁盘中必须已经存在一份真实的文件目录)
IndexWriter indexWriter = new IndexWriter(ramDir, analyzer,
MaxFieldLength.LIMITED);// 使用内存索引库目录对象来实例化索引库输出流对象
// IndexWriter indexWriter=new IndexWriter(dir,analyzer,false,MaxFieldLength.LIMITED);//使用文件目录对象实例化索引输出流对象,若目录不存在也会报错
// IndexWriter indexWriter=new
// IndexWriter(dir,analyzer,true,MaxFieldLength.LIMITED);//与上面的区别是每次执行都会重新覆写索引库
indexWriter.addDocument(doc); // 索引库中添加一份文档
indexWriter.close(); // 本语句应当放在finally块中
indexWriter = new IndexWriter(dir, analyzer, /*true,*/
MaxFieldLength.LIMITED);
System.out.println(indexWriter.getMaxMergeDocs());
System.out.println(indexWriter.getMergeFactor());
System.out.println();
indexWriter.addIndexesNoOptimize(ramDir); // Merges all segments from an array of indexes into this index.but not optimize.
indexWriter.optimize(); // Merges all segments together into a  single segment, optimizing an index for  search.
indexWriter.close();
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
4.在索引库中搜索文档
@Test
public void searchIndex() {
String queryString = "搜索";//要搜索的关键词
int count = 0;//总匹配的记录数
String[] fields = { "title", "content" };//要添加到文档中的字段集合
try {
QueryParser queryParser = new MultiFieldQueryParser(
Version.LUCENE_30, fields, analyzer);//多字段查询解析器
Query query = queryParser.parse(queryString);//查询解析器生成查询实例

IndexSearcher indexSearcher = new IndexSearcher(dir);//生成索引库搜索器实例对象
TopDocs topDocs = indexSearcher.search(query, 100);//包含关键词的所有内部编号的对象
count = topDocs.totalHits;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;//获取文档内部编号的索引集合
List<Article> articles = new ArrayList<Article>();
for (int i = 0; i < scoreDocs.length; i++) {
ScoreDoc sd = scoreDocs[i];//取得包含文档内部编号属性的每个对象
Document doc = indexSearcher.doc(sd.doc);//通过文档内部编号取出真正的文档

Article art = LuceneUtils.document2Article(doc);//article--->document转换
articles.add(art);//添加到list集合
}
indexSearcher.close();
System.out.println("匹配的总数量为" + count);
for (Article article : articles) {
System.out.println("id---->" + article.getId());
System.out.println("title--->" + article.getTitle());
System.out.println("content--->" + article.getContent());
}
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}

}
分享到:
评论

相关推荐

    第一个lucene的简单实例....

    标题 "第一个lucene的简单实例" 提到的是关于Apache Lucene的初步应用,这是一个全文搜索引擎库,常用于Java开发中。Lucene提供了高效的文本搜索功能,使得开发者能够快速地在大量数据中查找相关信息。 描述中的 ...

    lucene4.7 开发简单实例

    《Lucene 4.7 开发简单实例详解》 Lucene 是一款强大的全文搜索引擎库,广泛应用于各种信息检索系统中。在本实例中,我们将深入探讨Lucene 4.7版本,涵盖索引的创建、修改、删除,以及查询时的排序、分页、优化和...

    基于java的Lucene全文搜索引擎资源简单实例下载

    **基于Java的Lucene全文搜索引擎资源简单实例** Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。...随着深入学习,可以将Lucene应用到更复杂的搜索和信息处理场景中。

    Lucene搜索实例

    通过这个 Lucene 搜索实例,我们可以学习到如何在实际项目中利用 Lucene 实现高效的全文检索,理解其核心机制,以及如何根据具体需求进行定制和优化。无论是小型项目还是大型企业级应用,Lucene 都能作为一个强大且...

    lucene 4.8 实例

    本文将深入探讨 Lucene 4.8 版本中的关键特性和实例应用。 一、Lucene 的核心概念 1. 文档(Document):在 Lucene 中,文档是信息的基本单位,它可以包含多个字段(Field),如标题、正文、作者等。 2. 字段...

    lucene_web项目应用实例

    《Lucene Web项目应用实例详解》 在信息技术领域,搜索引擎技术是不可或缺的一部分,Apache Lucene作为一款开源全文搜索引擎库,为开发者提供了强大的文本检索能力。本文将深入探讨一个名为“lucene_web”的项目,...

    lucene全文检索实例

    通过这个"lucene全文检索实例文档",你可以学习如何设置 Analyzer、构建索引、执行查询以及解析结果。了解这些基础后,你可以根据项目需求进行定制化开发,比如优化搜索性能、实现多语言支持或增加高级查询特性。...

    paoding+lucene实现全文检索功能简单实例

    在实现这个简单实例的过程中,首先需要集成Paoding和Lucene到你的项目中。安装完成后,你需要创建一个索引器,使用Paoding对输入的文本进行分词,然后用Lucene的API将这些词构建为索引。索引过程通常包括打开读写器...

    Lucene简单实例

    在"Lucene简单实例"项目中,我们可能会遇到以下关键组件: 1. **Analyzer**:负责文本分析,定义如何处理输入的文本,如分词规则。 2. **IndexWriter**:用于创建和更新索引,它会管理索引的生命周期。 3. **...

    lucene简单实例

    对于初学者来说,通过学习这个简单实例,可以理解如何在较旧版本的Lucene中创建和使用索引。 **Lucene基本操作** 1. **创建索引**: Lucene的核心操作之一是创建索引。索引过程包括读取文档、分析文本、创建倒排...

    Lucene的的学习资料及案例

    在提供的案例中,你可以找到一个简单的Lucene应用实例。这个案例可能包含了以下部分: 1. **索引创建**: 包含读取数据源(如文件或数据库),创建Analyzer,将数据转换为Lucene的Document对象,并通过IndexWriter...

    搜索篇:Struts、Lucene的Web实例

    在本主题“搜索篇:Struts、Lucene的Web实例”中,我们将深入探讨两种重要的技术在Web开发中的应用:Apache Struts和Apache Lucene。Struts是一种经典的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序,而...

    Lucene简单应用

    ### Lucene简单应用知识点概述 #### 一、Lucene简介 - **搜索引擎的历史**:从最早的Archie和Gopher开始,到Robot(网络机器人)和Spider(网络爬虫)的出现,再到Excite、Galaxy、Yahoo等搜索引擎的发展,直至...

    简单的lucene demo

    **标题:“简单的lucene demo”** Lucene是一个强大的全文搜索引擎库,由Apache软件...通过这个简单的Lucene demo,我们可以了解到如何利用这个强大的全文搜索库进行基本操作,为进一步深入学习和实践Lucene打下基础。

    lucene 3.4基本应用

    学习Lucene 3.4,你可以参考官方文档、在线教程和开源项目。了解其核心组件如`Analyzer`、`Document`、`Field`、`Query`、`IndexWriter`和`Searcher`的工作原理,并尝试自己实现一个简单的搜索引擎。通过不断的实践...

    lucene小实例文件检索

    这个“lucene小实例文件检索”旨在为初学者提供一个简单但完整的文件检索功能实现,帮助理解Lucene的基本工作原理和使用方法。 在Lucene中,文件检索主要涉及以下几个核心概念: 1. **索引(Index)**:在Lucene中...

    lucene简单例子

    **标题与描述解析** 标题"lucene简单例子"指出我们将探讨如何使用Apache Lucene这个开源全文搜索引擎库进行数据存储和...开发者可以在此基础上学习如何集成Lucene到自己的应用程序中,实现高效、精准的全文搜索功能。

    lucene3.0使用介绍及实例

    **正文** Lucene是一个强大的全文检索库,由Apache软件基金会开发并维护,广泛应用于各种搜索引擎...通过学习和实践,开发者可以利用Lucene 3.0的强大功能,构建出高效、灵活的全文搜索引擎,满足各种应用场景的需求。

    lucene简单代码列子

    《Lucene简单代码实例解析》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...

Global site tag (gtag.js) - Google Analytics