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的分享还要继续,希望有越来越多的人可以共同努力!

相关文章
|
7月前
|
存储 自然语言处理 索引
05Lucene索引库的添加
05Lucene索引库的添加
16 0
|
9月前
|
自然语言处理 算法 UED
全文搜索
全文搜索树设计思路
86 0
|
存储 自然语言处理 数据库
5分钟了解lucene全文索引
本文通俗地介绍了Lucene全文检索的内容及工作原理,以及索引的结构,旨在让以前未了解过Lucene的读者在能在短时间内对Lucene有简单认知,未介绍具体代码,读完本文可知道Lucene是什么,有哪些具体应用,我们一直说的索引是什么。
|
存储 自然语言处理 程序员
|
Java Apache 索引
|
自然语言处理 Java 数据库
这么说吧,Lucene很简单,其实就是个框架,用于全文检索用的
我是风月连城,喜欢用简单的语言阐述知识点 长期分享原创java文章,分享进阶架构师学习笔记及学习资料 喜欢的大屌们可以关注下,共同学习,一起进步 ps:由于工资迟迟不发,影响心情,好几天没写文章.... Lucene是什么? 0 ) 关键词:Lucene ,搜索,全文检索 1)本质:一个Jar包,一个用于全文检索的框架 2)作用:Lucene不是一个完整的全文索引应用,而是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
|
存储 自然语言处理 Java
Lucene & 全文检索
目录结构:1.全文检索 2.Lucene入门3.Lucene进阶 全文检索 一, 生活中的搜索: 1.Windows系统中的有搜索功能:打开“我的电脑”,按“F3”就可以使用查找的功能,查找指定的文件或文件夹。
1222 0