`
leiwuluan
  • 浏览: 707099 次
  • 性别: 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笔记

    **1.1 什么是Lucene** Lucene是一个由Apache基金会维护的开源全文检索引擎工具包。它为开发者提供了一个简便的接口,使得在应用程序中实现高效的全文检索功能成为可能。Lucene不仅仅是一个简单的搜索工具,而是一个...

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》是一部深入探讨Apache Lucene全文搜索引擎库的详细资料,这份笔记涵盖了Lucene的核心概念、关键技术和实际应用。Lucene是Java开发的开源信息检索库,广泛应用于各种搜索和信息提取场景。...

    Lucene 3.6 学习笔记

    【Lucene 3.6 学习笔记】 Lucene 是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene 3.6版本中的关键概念、功能以及实现方法。 ### 第一章 Lucene 基础 #### 1.1 索引部分的核心...

    Lucene笔记.doc

    Apache Lucene 是一个开源的全文检索库,属于Java开发的文本搜索工具包。它不是一个完整的搜索引擎,而是一组用于构建全文检索应用的基础组件。Lucene提供了核心的索引和搜索功能,包括分词、建立倒排索引、评分以及...

    传智播客Lucene课程课堂笔记

    传智播客Lucene课程课堂笔记

    Lucene数据搜索笔记

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

    Lucene笔记:全文检索的实现机制

    ### Lucene笔记:全文检索的实现机制 #### 全文检索与中文支持 在全文检索领域,Lucene作为一款开源的高性能全文检索引擎,被广泛应用于各种场景之中。特别是对于中文用户而言,如何确保Lucene能够高效地支持中文...

    如何将Lucene索引写入Hadoop?

    Apache Lucene是一个高性能、全文本搜索库,而Hadoop是用于大数据处理的开源框架,两者结合能有效解决大规模数据集上的搜索问题。 首先,我们需要理解Lucene的基本工作原理。Lucene通过建立倒排索引来实现快速文本...

    Lucene学习笔记

    【Lucene学习笔记】 Lucene 是一款开源的全文检索框架,由Apache软件基金会维护,它提供了高效的、可扩展的搜索引擎功能。不同于一个完整的应用程序,Lucene 提供的是一个基础组件,开发者可以将其集成到自己的应用...

    Lucene研究,Lucene 读书笔记

    【Lucene 研究与读书笔记】 Lucene 是一个高性能、可扩展的全文检索库,它是Apache软件基金会的顶级项目之一,广泛应用于各种搜索引擎的开发。本文将深入探讨Lucene的核心概念,包括全文检索的基本原理、索引的创建...

    lucene文档笔记详解

    **Lucene文档笔记详解** Lucene,源自Apache软件基金会4 Jakarta项目组,是一个备受开发者青睐的开源全文检索引擎工具包。它提供了强大的文本分析、索引构建和搜索功能,但值得注意的是,Lucene本身并不包含完整的...

    lucene课程笔记

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

    lucene3.5学习笔记

    ### Lucene 3.5 学习笔记 #### 一、Lucene 3.5 基本概念 ##### 1.1 Lucene 概述 **1.1.1 IndexWriter** `IndexWriter` 是 Lucene 中的核心类之一,用于创建或更新索引。它提供了添加文档、删除文档、优化索引等...

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

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

Global site tag (gtag.js) - Google Analytics