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/
分享到:
相关推荐
Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息...
为了启动抓取任务,需要先准备一个包含待抓取网址的文件,并对配置文件做一些必要的调整。 - 创建包含初始URL的文件: ```bash mkdir urls echo "http://www.xici.net" >> urls/xici ``` - 编辑`conf/crawl-...
ext学习笔记一 小试iBatis RIA(Rich Internet Application)的现状和未来 Java应用中域名解析不过期的解决方法 Java编程那些事儿45—数组使用示例1 一步步熟悉OFBiz 用Java做客户端调用.NET写...
Apache Solr是一个开源的搜索平台,基于Apache Lucene构建,为互联网应用提供强大的搜索引擎功能。其6.5.1版本是对之前版本的改进和增强,特别是在Windows环境下提供了更好的中文分词和拼音分词支持,这使得Solr在...
Memcached和Lucene笔记 110 使用开源软件,设计高性能可扩展网站 110 面向高负载的架构Lighttpd+PHP(FastCGI)+Memcached+Squid 113 思考高并发高负载网站的系统架构 113 "我在SOHU这几年做的一些...
习惯使用 Evernote、OneNote 等软件做笔记;了解科技最新动态,订阅科技相关的 Rss,逛知乎、kickstarter、Iteye、csdn、爱范儿、36 氪等网站;申请了个人域名(www.justForFind.com),有意向开发个人博客;对 ...