近期接触了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>

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2RhbjE5OTExMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

从上面的样例我们能够看出创建索引须要的三个要素各自是:

1、indexWriter

2、Directory

3、Anayzer

4、Document

5、Field

对于lucene的分享还要继续。希望有越来越多的人能够共同努力!

最新文章

  1. gloolooer
  2. 使用 CSS3 实现 3D 图片滑块效果【附源码下载】
  3. 通过dubbo暴露接口调用方法,及基于zookeeper的dubbo涉及配置文件
  4. HDU4081 Qin Shi Huang&#39;s National Road System(次小生成树)
  5. [工作积累] Google Play Game SDK details
  6. submit和button提交表单的区别
  7. BeeFramework
  8. php练习2——乘法表,变量的使用
  9. table完美css样式,table的基本样式,table样式
  10. jmock2.5基本教程(转)
  11. [译]Stairway to Integration Services Level 15 – SSIS 参数回顾
  12. 原来你是这样的JAVA[02]-包、传参、构造器
  13. Gradle入门--基本配置
  14. View,ViewGroup的Touch事件的分发机制
  15. Asp .Net Core Spa (一) - 入门
  16. 【轻松前端之旅】CSS入门
  17. C++中重载(overload)、覆盖(override)与隐藏(oversee)
  18. eclipse中设置自定义文档签名(工具)
  19. Zabbix-Agent在主动模式启动服务后,提示no active checks on server [139.219.xx.xx:10051]: host [139.219.xx.xx] not found
  20. 2.jquery在js中写标准的ajax请求

热门文章

  1. 8.变量内存CPU原理
  2. miniUI-SelectGrid 弹出选择表格-翻页选中
  3. HTML5,CSS3新特性,与旧版的区别
  4. ACM训练联盟周赛(第三场)
  5. python制造模块
  6. AtCoderBeginner091-C 2D Plane 2N Points 模拟问题
  7. CMSIS-RTOS 中断处理Interrupt Handling
  8. WebKit载入流程 - 概述
  9. Ural 1303 Minimal Coverage(贪心)
  10. android selector设置button点击效果(具体)以及常见问题