`
hdxiong
  • 浏览: 378081 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Lucene 2.4 简单例子

阅读更多
package com.test;

import java.io.File;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;


public class Lucene24 {

	public static void createIndex(Directory dir, Analyzer analyzer) {
		try {
    //参数依次:索引目录、分词工具、是否清空目录、字段值的最大长度(UNLImited即Interger.MaxValue)
			IndexWriter writer = new IndexWriter(dir, analyzer, true,
					IndexWriter.MaxFieldLength.UNLIMITED);
			Document doc = new Document();
			doc.add(new Field("name", "jack lucy", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "中国 美国", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);

			doc = new Document();
			doc.add(new Field("name", "lucy lily", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "美国 日本", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);

			doc = new Document();
			doc.add(new Field("name", "lily john", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "日本 韩国", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);

			doc = new Document();
			doc.add(new Field("name", "john tom", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "韩国 法国", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);

			doc = new Document();
			doc.add(new Field("name", "tom july", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "法国 德国", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);

			doc = new Document();
			doc.add(new Field("name", "july kate", Field.Store.YES,
					Field.Index.ANALYZED));
			doc.add(new Field("country", "德国 英国", Field.Store.YES,
					Field.Index.ANALYZED));
			writer.addDocument(doc);
			// writer.optimize();
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void search(Directory dir, Analyzer analyzer) {
		try {
			Searcher searcher = new IndexSearcher(dir);
			Query query = new QueryParser("country", analyzer).parse("美国");
  //此处在2.0基础上有改动,此处必须传入一个返回条数,这里用searcher.maxDoc()表示返回所有条数。
			ScoreDoc[] docs = searcher.search(query, searcher.maxDoc()).scoreDocs;
			System.out.println(docs.length);;
			Document doc;
			for (int i = 0; i < docs.length; i++) {
				doc = searcher.doc(docs[i].doc);
				System.out.println(doc.get("country"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		try {
			Analyzer analyzer = new StandardAnalyzer();
			FSDirectory dir = FSDirectory.getDirectory(new File("C:\\Lucene_index"));
			createIndex(dir, analyzer);
			search(dir, analyzer);
			dir.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

分享到:
评论
5 楼 hdxiong 2009-07-22  
lawrenst 写道
假如我把content字段的内容放到文件中,把name域的内容当做文件名称,就搜不到了,这是为什么呢?

不明白你啥意思?
4 楼 lawrenst 2009-07-08  
假如我把content字段的内容放到文件中,把name域的内容当做文件名称,就搜不到了,这是为什么呢?
3 楼 chenhua_1984 2009-05-06  
非常好!收藏了!
2 楼 hdxiong 2009-03-23  
zpap 写道

这样贴出来也没有什么意义, 网上一搜一大半.. 应该加上注释跟解释吧.....

由于近段时间没有研究Lucene了,所以没来得及完善,谢谢你的提醒,我会抽时间补上去的。
1 楼 zpap 2009-03-17  
这样贴出来也没有什么意义, 网上一搜一大半..


应该加上注释跟解释吧.....

相关推荐

    Lucene 2.4 入门例子

    **Lucene 2.4 入门例子** Lucene 是一个高性能、全文本搜索库,由Apache软件基金会开发。它提供了强大的搜索功能,被广泛应用于各种应用中的信息检索。在这个入门例子中,我们将探讨Lucene 2.4版本的一些关键特性和...

    Lucene2.4完美样例+中文文档

    **Lucene 2.4 完美样例与中文文档详解** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它为开发者提供了在 Java 应用程序中实现全文检索功能的强大工具。Lucene 2.4 版本是其历史上的一个重要...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    《Lucene 2.4与Nutch学习笔记:在多文本文档中搜索关键词》 Lucene是一个高性能、全文本搜索引擎库,它为开发者提供了在Java应用程序中实现全文搜索功能的基本工具。Nutch则是一个开源的网络爬虫项目,用于抓取...

    lunence2.4例题

    "例题"则表明这是一个实践导向的学习材料,而"最新版"可能意味着这些例子和练习反映了Lucene 2.4的最新特性或更新。 【压缩包子文件的文件名称列表】"lucence2.4"很可能包含了与Lucene 2.4相关的源代码、文档、测试...

    lucene全文检索简单索引和搜索实例

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    Lucene简单使用需要的jar

    - **commons-io-2.4.jar**:Apache Commons IO是Java的一个工具库,提供了大量的I/O操作辅助类,如文件读写、流操作等,对于处理Lucene的文件操作非常有用。 **使用步骤** 1. **创建索引**:首先,需要创建一个`...

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    接着,`lucene-demos-3.0.2.jar`则是Lucene的演示程序集合,它为开发者提供了直观的例子,帮助理解和学习如何使用Lucene。这些示例涵盖了从最基本的索引创建,到复杂的查询构造和结果排序。例如,...

    lucene的封装和性能优化

    例如,可以创建一个QueryParser类,处理用户输入的关键词,进行分词、分析和逻辑组合,生成相应的Query实例。 #### 2.3 搜索服务 封装搜索服务是为了提供统一的搜索接口,可以包括分页搜索、高亮显示、排序等功能...

    lucene-5.4.0

    4.2 案例分析:分享基于Lucene 5.4.0的搜索引擎构建实例,例如新闻网站的全文搜索、电商产品的推荐系统等。 五、未来发展趋势 5.1 版本迭代:探讨Lucene后续版本的新特性,如6.x、7.x引入的创新技术。 5.2 社区...

    Lucene使用教程

    下面是一个简单的Lucene使用示例,演示如何创建索引和添加文档: ```java // 创建索引写入器 IndexWriter writer = new IndexWriter("/data/index/", new StandardAnalyzer(), true); // 创建文档 Document doc = ...

    SSH+compass 整合

    本资源是struts2 + spring2.5 + hibernate 3.2 + lucene 2.4 + compass 2.0整合实例,可以为初学入门者,提供个参考,本人也是网上找的,感觉很不错(因其中所用的jar文件太大,无法上传,大家可以自己添加各框架...

    lucene的使用

    如果项目中需要操作文件,可能还需要commons-io-2.4.jar包。 二、创建索引: 1. 选择原始文档所在的目录和索引库要存放的目录。 2. 使用FSDirectory.open()方法打开索引库目录,创建IndexWriter对象用于写入索引...

    基于Lucene的分布式搜索设计说明书

    然而,单个 Lucene 实例可能无法应对大规模的数据量,因此,将 Lucene 集成到分布式系统中,实现分布式搜索,成为了提高检索效率和可扩展性的有效解决方案。 ### 1. 引言 #### 1.1 目的 本设计说明书旨在详细阐述...

    lucune3.0 及高亮显示 所需的包及代码

    标题中的“lucene3.0”指的是Apache Lucene的3.0版本,这是一个开源的全文检索库,由Java编写。Lucene提供了强大的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。而“高亮显示”通常是指在搜索结果中...

    lucene_7_4_0

    通过设置断点,观察类的实例化过程,跟踪方法调用,可以深入了解Lucene的实现细节。 总结,Lucene 7.4.0作为一款强大的全文搜索引擎库,其在Java开发环境中提供了高效、灵活的搜索解决方案。通过IDEA工程的集成,...

    hibernate_search

    它通过集成 Apache Lucene(一个高性能、全功能的文本搜索引擎库),为开发人员提供了一种简单而强大的方式来添加搜索功能到基于 Hibernate 的应用程序中。 #### 二、开始使用 ##### 2.1 系统要求 - **Java 版本*...

    solr教程+实例

    1.1 Solr的起源与发展:Solr最初由Yonik Seeley创建,后来成为Apache Lucene项目的一部分,发展至今已成为全球范围内广泛使用的搜索平台。 1.2 Solr的主要功能:Solr不仅提供全文索引,还支持多种数据类型(如日期、...

    SOLR的应用教程

    3.2 一个简单的例子 包括Solr Schema设计、构建索引和搜索测试。 3.3 搜索引擎的规划设计 3.3.1 定义业务模型 3.3.2 定制索引服务 3.3.3 定制搜索服务 3.4 搜索引擎配置 3.5 如何进行索引操作? 3.5.1 基本索引...

Global site tag (gtag.js) - Google Analytics