`
leiwuluan
  • 浏览: 694545 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Lucene 笔记一(是什么?,能做什么?,怎么做?)

 
阅读更多

Lucene 是什么?

        Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,
即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文
本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便
的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

 

创始人

       原作者是Doug Cutting[dəu,'kʌtɪŋ],他是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎[6]的主要
开发者,后在Excite[7]担任高级系统架构设计师,目前从事于一些Internet底层架构的研究。早先发布在作者自
己的,后来发布在SourceForge[8],2001年年底成为apache软件基金会jakarta的一个子项目。

 

特点及优势

       Lucene是一个高性能、可伸缩的信息搜索(IR)库。它使你可以为你的应用程序添加索引和搜索能力。Lucene
是用java实现的成熟的、免费的开源项目。不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的核心。apache软件基金会的网站使用了Lucene作为全文检索的引擎,IBM的开源软件eclipse[9]的2.1版本中也采用了Lucene作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere[10]中也采用了Lucene。Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。

 

**

lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util

 

Lucene 能做什么?

 

        大家都知道,Lucene是做搜索的,那它到底能做一些什么工作呢,它的角色又是什么。

        Lucene 可以使你的应用软件具有索引和搜索的功能。Lucene 可以对任何能够转换为文本格式的数据进行索引和搜索。Lucene 并不关心数据的来源、格式甚至是语言,只要你能将这些数据转换为文本,这就意味着你可以使用Lucene来索引和搜索采用以下格式存储的数据:远程服务器上的网页、本地文件系统中的文档、简单的文本文件、Word文档、HTML、PDF以及一些其他的可以从中抽取出文本信息的格式。

 

Lucene角色:

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

 

 

Simple:

 建立索引


      IndexWriter writer = new IndexWriter("E:/index", new StandardAnalyze(),true,MaxFieldLength.UNLIMITED);
     //true代表覆盖原先数据,maxFieldLength用来限制Field的大小
  Document doc = new Document();
  doc.add(new Field("title", "lucene introduction", Field.Store.YES, Field.Index.ANALYZED,
  Field.TermVector.WITH_POSITIONS_OFFSETS));
  doc.add(new Field("time", "60", Field.Store.YES, Field.Index.ANALYZED,
  Field.TermVector.WITH_POSITIONS_OFFSETS));
  writer.addDocument(doc);
  writer.optimize(); //优化
  writer.close();

 搜索

 

IndexSearcher searcher= new IndexSearcher("E:/index") Query query = new TermQuery(new Term("title", "lucene"));//单个字节查询
  //Query query = new FuzzyQuery(new Term("title", "lucena"));//模糊查询
  //Query query = new WildcardQuery(new Term("title", "lu*"));// 通配符查询 ?代表一个字符,*代表0到多个字符
  //BooleanQuery query = new BooleanQuery();//条件查询
  //BooleanQuery qson1 = new BooleanQuery();
  //Query q1 = new TermQuery(new Term("title", "lucene"));
  //qson1.add(q1, Occur.MUST);//MUST是必须满足的
  //BooleanQuery qson2 = new BooleanQuery();
  //Query q2= new TermQuery(new Term("sex", "woman"));
  //qson2 .add(qson1, Occur.MUST_NOT);//MUST_NOT是必须不满足
  //query.add(qson1, Occur.SHOULD);
  //query.add(qson2, Occur.SHOULD);//SHOULD代表满足qson1或者满足qson2都可以
  //PhraseQuery query = new PhraseQuery();//近距离查询
  //query.setSlop(5);//距离设置为5
  //query.add(new Term("title", "lucene"));
  //query.add(new Term("title", "introduction"));//查询出title中lucene和introduction距离不超过5个字符的结果
  //Query query = new PrefixQuery(new Term("title", "lu"));//WildcardQuery的lu*一样
  //RangeQuery query = new RangeQuery(new Term("time", "50"),new Term("time", "60"), true);
  //true代表[50,60],false代表(50,60)
  Hits hits = searcher.search(query);
  for (int i = 0; i < hits.length(); i++) {
  Document d = hits.doc(i);
  String title= d.get("title");
  System.out.print(title+ " ");
  } 

 

 

官网下载:http://lucene.apache.org/

 

 

 

 

1
1
分享到:
评论
1 楼 liuInsect 2012-02-07  
可以做站内的搜索功能吗? 比如 淘宝网的商品搜索

相关推荐

    lucene使用总结笔记

    lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记

    lucene笔记.pdf

    lucene笔记

    lucene笔记

    lucene 笔记

    Lucene笔记

    Lucene笔记

    Lucene笔记.doc

    Lucene笔记中包含了 什么是lucene 应用领域 创建索引 使用luke查看索引 搜索索引 Field域的详细介绍 各种类型的搜索 使用中文分词器

    Lucene.Net实现全文搜索

    本文介绍Lucene.Net 是什么?Lucene.Net 能作什么?以及怎么做的问题?最后给出 Lucene.Net 实现全文搜索的一个示例

    Lucene 课堂笔记

    传智播客lucene课堂笔记,和大家分享下,就是上课的时候记的

    lucene笔记共38页.pdf.zip

    lucene笔记共38页.pdf.zip

    教你如何做lucene.net

    本文介绍一下Lucene.Net 是什么?Lucene.Net 能作什么?以及怎么做的问题?最后给出 Lucene.Net 实现全文搜索的一个示例

    传智播客Lucene课程课堂笔记

    传智播客Lucene课程课堂笔记

    Lucene 3.6 学习笔记

    第一章 LUCENE基础 2 1.1 索引部分的核心类 2 1.2 分词部分的核心类 2 1.3 搜索部分的核心类 2 第二章 索引建立 3 2.1 创建Directory 3 2.2 创建Writer 3 2.3 创建文档并且添加索引 4 2.4 查询索引的基本信息 5 2.5 ...

    Lucene数据搜索笔记

    Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息...

    本人的Lucene2.9学习笔记

    本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记本人的Lucene2.9学习笔记本人的Lucene2.9学习笔记 本人的Lucene2.9学习笔记

    Lucene部分笔记

    一些Lucene类的常用方法,初学者可以看一下,来自《开发自己的搜索引擎》一书。

    lucene课程笔记

    关于lucene开发的工作笔记,详细的介绍了lucene的索引在创建过程中应该主意的一些事项和要求

    Lucene学习笔记(一)Lucene入门实例

    NULL 博文链接:https://kylinsoong.iteye.com/blog/719415

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

Global site tag (gtag.js) - Google Analytics