Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
Lucene的发展历程:早先发布在作者自己的www.lucene.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/
已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:
* Jive:WEB论坛系统;
* Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLucene search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。
* Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene
*
Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene
对于中文用户来说,最关心的问题是其是否支持中文的全文检索。但通过后面对于Lucene的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。
下面是一个入门demo
package demo.first;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.store.LockObtainFailedException;
public class FirstDemo {
String path = "D://workspace//fwk//lucenedemo//firstLuceneIndex";
public static void main(String[] args) {
FirstDemo fd = new FirstDemo();
//创建
fd.createLuceneIndex();
System.out.println("-------------------");
//Hits.通过遍历Hits可获取返回的结果的Document,通过Document则可获取Field中的相关信息了。
//测试
Hits hits = fd.searchLuceneIndex("索*");
for(int i = 0 ;i<hits.length();i++){
try {
System.out.println(hits.id(i));
System.out.println(hits.doc(i).get("content"));
System.out.println(hits.score(i));
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 创建索引
*/
public void createLuceneIndex(){
try {
//IndexWriter,通过它建立相应的索引表,相当于数据库中的table
//IndexWriter(索引路径, 分词器, 是否覆盖已存在)
IndexWriter iwriter = new IndexWriter(path, new StandardAnalyzer(), true);
//Document,有点类似数据库中table的一行记录
Document doc1 = new Document();
//Field,这个和数据库中的字段类似
//Store {COMPRESS: 压缩保存。用于长文本或二进制数据,YES :保存,NO :不保存}
//Index {NO :不 建索引,TOKENIZED :分词, 建索引,UN_TOKENIZED :不分词, 建索引,
//NO_NORMS :不分词, 建索引。但是Field的值不像通常那样被保存,而是只取一个byte,这样节约存储空间}
Field field1 = new Field("content", "搜索引擎", Store.YES, Index.TOKENIZED);
doc1.add(field1);
Document doc2 = new Document();
Field field2 = new Field("content","创建索引",Store.YES,Index.TOKENIZED);
doc2.add(field2);
iwriter.addDocument(doc1);
iwriter.addDocument(doc2);
iwriter.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 检索索引
* @param word 关键字
* @return
*/
public Hits searchLuceneIndex(String word){
//Query,Lucene提供了几种经常可以用到的
//Query:TermQuery、MultiTermQuery、BooleanQuery、WildcardQuery、PhraseQuery、PrefixQuery、PhrasePrefixQuery、FuzzyQuery、RangeQuery、SpanQuery,
//Query其实也就是指对于需要查询的字段采用什么样的方式进行查询,
//如模糊查询、语义查询、短语查询、范围查询、组合查询等,还有就是QueryParser,
//QueryParser可用于创建不同的Query,还有一个MultiFieldQueryParser支持对于多个字段进行同一关键字的查询,
//IndexSearcher概念指的为需要对何目录下的索引文件进行何种方式的分析的查询,有点象对数据库的哪种索引表进行查询并按一定方式进行记录中字段的分解查询的概念,
//通过IndexSearcher以及Query即可查询出需要的结果
Query query=new WildcardQuery(new Term("content",word));
Searcher search = null;
try {
search=new IndexSearcher(path);
return search.search(query);
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
分享到:
相关推荐
赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...
使用compass+lucene实现简单的全文检索功能 里面整合了spring2.5、hibernate3.2、struts2.0,是对数据库进行全文检索的一个非常好的demo的所有jar包组合! 对研究基于数据库检索的java开源搜索引擎的朋友有很大的...
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
赠送jar包:lucene-backward-codecs-7.2.1.jar; 赠送原API文档:lucene-backward-codecs-7.2.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
lucene-analyzers-common-4.3.0.jar需要的可以下载,搬运
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...
Lucene是一个高性能、全功能的全文搜索引擎库,它提供了一套完整的搜索解决方案,包括索引、查询解析、排序等。`lucene-core-2.4.1.jar`是Lucene的核心库,包含了Lucene的基础组件和API,如文档处理、索引操作、查询...
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
lucene-demo-3.3.0.jar lucene-grouping-3.3.0.jar lucene-highlighter-3.3.0.jar lucene-icu-3.3.0.jar lucene-instantiated-3.3.0.jar lucene-memory-3.3.0.jar lucene-misc-3.3.0.jar lucene-queries-3.3.0.jar ...
例如,"SimpleTextIndexWriter"演示了如何创建一个简单的文本索引,"BasicSearch"展示了如何执行基本的全文搜索,而"TopDocsCollector"则解释了如何获取和排序搜索结果。通过运行这些示例,开发者可以快速掌握Lucene...
lucene-analyzers-smartcn-5.2.1.jar Smart Jar包,在Solr中的使用参考http://blog.csdn.net/xuxiuning/article/details/47750701
lucene-analyzers-common-4.2.0.jar; lucene-analyzers-kuromoji-4.2.0.jar; lucene-analyzers-phonetic-4.2.0.jar; lucene-codecs-4.2.0.jar; lucene-core-4.2.0.jar; lucene-grouping-4.2.0.jar; lucene-...
赠送jar包:lucene-core-6.6.0.jar; 赠送原API文档:lucene-core-6.6.0-javadoc.jar; 赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene...
在Java环境中,Apache Lucene是一个广泛使用的全文搜索引擎库,它提供了丰富的文本处理工具,包括分词功能。 标题提到的"MMAnalyzer 分词jar包"是基于Lucene的一个中文分词组件,名为Jeasy Analysis,具体版本为...
赠送jar包:lucene-sandbox-7.2.1.jar; 赠送原API文档:lucene-sandbox-7.2.1-javadoc.jar; 赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API...
lucene-analyzers-icu-4.4.0.jar
标题中的“lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是...
赠送jar包:lucene-backward-codecs-7.3.1.jar; 赠送原API文档:lucene-backward-codecs-7.3.1-javadoc.jar; 赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-...
赠送jar包:lucene-spatial-extras-7.3.1.jar; 赠送原API文档:lucene-spatial-extras-7.3.1-javadoc.jar; 赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras...