Lucene-全文索引

最近接触了lucene,我想也有很多人曾经听过,于是带着好奇心,我开始对lucene进行了解,给我影响最深的是它非常多的应用了索引表,这个工具之所以快是就是因为大量引用到了索引表。今天只说下我刚开始做的校历例子,创建索引。

下面对lucene从概念上做个介绍,Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能.Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能.不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library.你也可以把它理解为一个将索引,搜索功能封装的很好的一套简单易用的API.利用这套API你可以做很多有关搜索的事情,而且很方便.

那么lucene可以做什么呢?Lucene可以对任何的数据做索引和搜索. Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用.也就是说不管是MS word,
Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用.你就可以用Lucene对它们进行索引以及搜索. 下面是我做的一个小例子,就是一个查询生成索引的例子:

<span style="font-size:14px;">package com.jikexueyuan.study;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.IntField;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
public class IndexCreate {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Analyzer analyzer=new StandardAnalyzer(Version.LUCENE_46);//StandardAnalyzer是将英文按照空格、标点符号等进行分词,将中文按照单个字进行分词,一个汉字算一个词
		IndexWriterConfig indexWriterConfig=new IndexWriterConfig(Version.LUCENE_46,analyzer);//把写入的文件用指定的分词器将文章分词(这样检索的时候才能查的快),然后将词放入索引文件。
		indexWriterConfig.setOpenMode(OpenMode.CREATE_OR_APPEND);
		Directory directory=null;
		IndexWriter indexWriter=null;
		try {
			directory=FSDirectory.open(new File("E://index/test"));// //索引库存放在这个文件夹里  ,Directory表示索引文件保存的地方,是抽象类,两个子类FSDirectory表示文件中,RAMDirectory 表示存储在内存中
			if(indexWriter.isLocked(directory)){
				indexWriter.unlock(directory);
			}
			indexWriter=new IndexWriter(directory,indexWriterConfig);
		} catch (Exception e) {
			e.printStackTrace();
		}

		//Document document=new Document();
		Document doc = new Document();
		doc.add(new StringField("id","abcde", Store.YES));
		doc.add(new org.apache.lucene.document.TextField("content","极客学院",Store.YES));
		doc.add(new IntField("num",1,Store.YES));

		try {
			indexWriter.addDocument(doc);//向索引中添加文档(Insert)
		} catch (Exception e) {

			e.printStackTrace();

		}

		Document doc1 = new Document();
		doc1.add(new StringField("id","sdfsd", Store.YES));
		doc1.add(new org.apache.lucene.document.TextField("content","Lucene案例",Store.YES));
		doc1.add(new IntField("num",1,Store.YES));

		try {
			indexWriter.addDocument(doc1);
		} catch (Exception e) {

			e.printStackTrace();

		}
		try {
			indexWriter.commit();
			indexWriter.close();
			directory.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
</span>

结果会生成一系列的有关索引的文件,如下图:

从上面的例子我们可以看出创建索引需要的三个要素分别是:

1、indexWriter

2、Directory

3、Anayzer

4、Document

5、Field

对于lucene的分享还要继续,希望有越来越多的人可以共同努力!

时间: 2024-08-25 11:10:16

Lucene-全文索引的相关文章

全文索引-lucene,solr,nutch,hadoop之nutch与hadoop

全文索引-lucene.solr.nutch,hadoop之lucene 全文索引-lucene.solr,nutch,hadoop之solr 我在去年的时候,就想把lucene,solr.nutch和hadoop这几个东东给具体的介绍下,但因为时间的关系.我还是仅仅写了两篇文章,分别介绍了一下lucene和solr,后来就没有在写了,但我心里还是期待的,尽管到如今我没有真正搞过nutch和hadoop实战项目,但公司立即就要做hadoop大数据的监控了.我一直都说,要做一个有准备的人,因此我从

Lucene:基于Java的全文检索引擎简介 (zhuan)

http://www.chedong.com/tech/lucene.html ********************************************** Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的

全文索引之nutch与hadoop(转)

原文:http://blog.csdn.net/chaofanwei/article/details/39476535 全文索引-lucene,solr,nutch,hadoop之lucene 全文索引-lucene,solr,nutch,hadoop之solr 我在去年的时候,就想把lucene,solr,nutch和hadoop这几个东东给详细的介绍下,但由于时间的关系,我还是只写了两篇文章,分别介绍了一下lucene和solr,后来就没有在写了,但我心里还是期待的,虽然到现在我没有真正搞过

Lucene:基于Java的全文检索引擎简介

Lucene是一个基于Java的全文索引工具包. 基于Java的全文索引引擎Lucene简介:关于作者和Lucene的历史 全文检索的实现:Luene全文索引和数据库索引的比较 中文切分词机制简介:基于词库和自动切分词算法的比较 具体的安装和使用简介:系统结构介绍和演示 Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 另外,如果是在选择全文引擎,现在也许是试试 Sphinx的时候了:相比Lucene速度更快, 有中文分词的

做一个合格的前端,gulp自动化构建工具入门教程

我的新作观点网http://www.guandn.com (观点网是一个猎获新奇.收获知识.重在独立思考的网站),它前端js.css的压缩.合并.md5命名等就使用了gulp自动化构建技术,gulp很小巧使用起来很舒服.ps:接下来我会逐一开源观点网开发过程中的前后端技术,如:lucene全文索引.自定义富文本编辑器.图片上传压缩水印等等. 一.什么是gulp gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.例如:css.js的合并与压缩(减少http请求,缩小文

使用Lucene.Net做一个简单的搜索引擎-全文索引

Lucene.Net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎. Lucene.net是Apache软件基金会赞助的开源项目,基于Apache License协议. Lucene.net并不是一个爬行搜索引擎,也不会自动地索引内容.我们得先将要索引的文档中的文本抽取出来,然后再将其加到Lucene.net索引中.标准的步骤是先初始化一个Analyzer.打开一个

Lucene 基础理论

1. 全文检索系统与Lucene简介 1.1 什么是全文检索与全文检索系统 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式.这个过程类似于通过字典中的检索字表查字的过程. 全文检索的方法主要分为按字检索和按词检索两种.按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合.对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上

初识Lucene

最近准备开发搜索引擎,而在Java的领域开发搜索引擎,基本都要了解Lucene.Lucene是提供高性能的全文检索包,但不提供完整的搜索功能.本文在这里简单介绍Lucene的基本架构与优点.Luence主要的应用方向是嵌入到各种应用中实现针对应用的全文索引/检索功能. Luence的优点 为什么在Java语言中开发搜索引擎基本都会提到Lucene呢?说明它必定有很多优秀的地方,根据网上的资料了解到它有以下的优点: 索引文件格式独立于应用平台.Lucene定义了一套以8位字节为基础的索引文件格式,

整合Lucene 4.10.1 与IK Analyzer

注意,IK Analyzer需要使用其下载列表中的 IK Analyzer 2012FF_hf1.zip,否则在和Lucene 4.10配合使用时会报错. 我使用 intellij IDEA 12进行的测试. 建立java项目 建立项目HelloLucene,导入Lucene的几个库."File"->"Project Structure"-> 将IK Analyzer 2012FF_hf1.zip解压后的源码放入src目录,并将字典和配置文件放入src目

Hadoop与Lucene和Nutch的关系

Hadoop+Lucene+Nutch Hadoop中实现了 Google的GFS和MapReduce算法,使Hadoop成为了一个分布式的计算平台.Hadoop不仅是一个用于存储的分布式文件系统,而且是设计用来在由通用计算设备组成的大型集群上执行分布式应用的框架. Lucene是一个Java高性能全文索引引擎工具包可以方便的嵌入到各种实际应用中实现全文索引搜索功能.Nutch是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch 提供了文本搜索和索引的API,N