`
tianhewulei
  • 浏览: 24484 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

一个简单的lucene全文索引的创建及追加过程

阅读更多
Lucene是一套用于全文检索和搜寻的开放源码程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具;就其本身而论,Lucene是现在并且是这几年,最受欢迎的免费java资讯检索程式库。人们经常提到资讯检索程式库,就像是搜寻引擎,但是不应该将资讯检索程式库与网搜索引擎相混淆。

下面是一个简单的lucene索引创建及追加的代码
IndexWriter writer = null;
		try{
			File root = new File(indexPath);		
			if (root == null || root.listFiles() == null || root.listFiles().length == 0) {
				System.out.println("----------begin index-----------");
				writer = new IndexWriter(indexPath, new StandardAnalyzer(),
						true);
			} else {
				System.out.println("----------append index-----------");
				writer = new IndexWriter(indexPath, new StandardAnalyzer(),
						false);
			}
			TopicDetail td = new TopicDetail();
                           Document doc = new Document();	
			doc.add(new Field("tid", String.valueOf(td.getTopicID()), Field.Store.YES, Field.Index.TOKENIZED));
			doc.add(new Field("pid", String.valueOf(td.getPID()),Field.Store.YES, Field.Index.TOKENIZED));
			doc.add(new Field("mtitle", td.getTopicTitle(), Field.Store.YES, Field.Index.TOKENIZED));
            doc.add(new Field("mauthor", td.getTopicAuthor(), Field.Store.YES, Field.Index.TOKENIZED));
            doc.add(new Field("mtime", td.getTopicPostTime(), Field.Store.YES, Field.Index.UN_TOKENIZED));
            doc.add(new Field("mcontent", td.getTopicContent(), Field.Store.YES, Field.Index.TOKENIZED));
            doc.add(new Field("murl", td.getUrl(), Field.Store.YES, Field.Index.TOKENIZED));
writer.addDocument(doc);

			System.out.println("正在对索引进行优化...");
			writer.optimize();
			System.out.println("优化完毕!");
			System.out.println("正在关闭索引读写器...");
			writer.close();
			System.out.println("索引读写器已经关闭!");			
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				writer.close();
			} catch (CorruptIndexException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}


这段代码主要处理的是索引的创建以及追加的过程,如果只是平常的应用,我觉得有这些代码已经足够了。
在new 一个filed的时候,Field.Store 表示“是否存储”,即该Field内的信息是否要被原封不动的保存在索引中。
Field.Index 表示“是否索引”,即在这个Field中的数据是否在将来检索时需要被用户检索到,一个“不索引”的Field通常仅是提供辅助信息储存的功能。

Store
       COMPRESS:压缩保存。用于长文本或二进制数据
        YES:保存
        NO:不保存
Index
       NO:不建索引
        TOKENIZED:分词,建索引
        UN_TOKENIZED:不分词,建索引
        NO_NORMS:不分词,建索引。但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间

需要注意的是,如果你查询的时候需要对某个字段进行排序,那么这个指定的字段必须为field.index.un_tokenized,否则查询会报错

分享到:
评论
2 楼 tianhewulei 2010-06-22  
TopicDetail只是一个javabean而已,存放临时数据的,程序运行时,从该对象里面取值然后放入相应的lucene索引字段,你可以根据你实际应用去改变这个类
1 楼 haoyuheng 2010-06-01  
问一下楼主TopicDetail是什么类啊?

相关推荐

    Lucene3.0创建索引

    本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、Lucene3.0简介 Lucene是一款高性能、全功能的全文搜索引擎库。它为开发者提供了构建搜索应用所需的所有基本工具...

    Lucene索引的基本操作

    例如,我们可以创建一个简单的测试类`L_IndexingTest`,使用`DirectoryReader`和`IndexSearcher`来查询索引: ```java public class L_IndexingTest { public static void main(String[] args) throws Exception {...

    LuceneUtils_lucenejava_全文检索_lucene_

    Lucene,作为Apache软件基金会的一个顶级项目,是Java语言开发的全文检索库,提供了强大的文本分析、索引构建和搜索功能。本文将深入探讨如何使用LuceneJava来创建中文索引并实现全文检索。 一、Lucene简介 Lucene...

    lucene2.9.1所有最新开发包及源码及文档

    开源全文搜索工具包Lucene2.9.1的使用。 1. 搭建Lucene的开发环境:在classpath中添加lucene-core-2.9.1.jar包 2. 全文搜索的两个工作: 建立索引文件,搜索索引. 3. Lucene的索引文件逻辑结构 1) 索引(Index)由...

    lucene demo

    Apache Lucene 是一个高性能、全文本搜索库,它为开发人员提供了在Java应用程序中实现全文检索功能的基础。Lucene Demo 是一个示例项目,旨在展示如何使用Lucene进行文本索引和搜索。这个文档将帮助我们理解Lucene的...

    lucene 2.1.0 好用实例

    Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效的文本搜索功能,广泛应用于各种Java项目中。在Lucene 2.1.0版本中,我们可以看到其核心功能的实现,包括文档的索引创建、更新以及查询...

    lucene2.9.4

    Lucene,作为Apache软件基金会的一个顶级项目,是Java开发的全文检索库,它提供了强大的文本搜索功能,被广泛应用于各种信息检索和搜索引擎的构建。在本文中,我们将深入探讨Lucene 2.9.4这一经典版本,分享其核心...

    本人的Lucene2.9学习笔记

    本文将详细讲解Lucene 2.9.1版本的核心概念、架构以及索引创建与搜索的流程。 一、Lucene 2.9.1环境搭建 在开始使用Lucene之前,首要任务是搭建开发环境。这包括在项目classpath中添加核心库文件——`lucene-core-...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-17.Lucene高级进阶3 共4页.pptx

    Lucene是一个强大的全文搜索引擎库,广泛应用于各种信息检索系统。本教程通过17讲内容,深入讲解了如何利用Lucene4.X实现一个类似百度的大型文档搜索系统。在高级进阶部分,我们将重点探讨Lucene在索引、搜索、排序...

    lunece 建立索引与查询示例

    Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它提供了高效、可扩展的搜索功能,被广泛应用于各种项目和产品中。本指南将详细介绍如何使用 Lucene 创建索引以及执行查询。 ### 1. 安装与引入 ...

    Lucene4.X实战类baidu搜索的大型文档海量搜索系统-16.Lucene高级进阶2 共4页.pptx

    Lucene作为一个开源全文搜索引擎库,它提供了高效、灵活的索引和搜索功能,是构建高性能搜索系统的基石。在这个部分,我们将重点关注如何对已有的索引进行更新、分页搜索的实现策略以及相关的实战示例。 首先,我们...

    1000道 互联网大厂Java工程师面试题-基础 全部有

    1. Elasticsearch 介绍:Elasticsearch 是一个基于 Lucene 的搜索引擎,提供了全文搜索、数据分析等功能。 2. Elasticsearch 的应用场景:包括大数据分析、搜索引擎、日志分析等。 Memcached 知识点 1. Memcached...

Global site tag (gtag.js) - Google Analytics