lucene是一个开源的全文检索引擎工具包。在学习lucene之前需要对全文检索的原理有一定的了解,http://ye-liang.iteye.com/admin/blogs/new,这篇文章对了解原理很有帮助。
我这里只附上自学过程中写的一个例子。
lucene下载地址:http://lucene.apache.org/
lucene的核心功能两大块:创建索引和搜索
创建索引的代码
// 通过Analyzer的创建指定索引语言词汇的分析器 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47); // 通过Directory的创建指定索引存放位置 Directory dir = FSDirectory.open(new File("c://indexFile")); // 通过IndexWriterConfig的创建指定索引版本和语言词汇分析器 IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_47, analyzer); // 创建IndexWriter,用来写索引文件 IndexWriter indexWriter = new IndexWriter(dir, iwc); for (File f : new File("c://dataFile").listFiles()) { Reader txtReader = new FileReader(f); // 通过创建Document指定要索引的文档 Document doc = new Document(); // 向Document文档中添加Field信息,不同类型的信息用不同类型的Field来表示 doc.add(new TextField("path", f.getCanonicalPath(), Store.YES)); doc.add(new TextField("content", txtReader)); // 将Document添加到IndexWriter中并且提交 indexWriter.addDocument(doc); } indexWriter.commit(); indexWriter.close();
主要通过IndexWriter对象将c://dataFile下的所有文件建立索引,索引文件的目录位置c://indexFile。Document对象对应一个带搜索的文件,可以是文本文件也可以是一个网页。可以为Document对象指定field,比如这里我们为文本文件定义了两个field:path和content。
在c://dataFile目录下面新建几个txt文件,随便输入几个内容,作为待搜索的文件。
运行完上面的代码后,在c://indexFile目录下面生成了索引文件。
搜索的代码
// 通过Analyzer的创建指定索引语言词汇的分析器 Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47); // 通过Directory的创建指定索引存放位置 Directory dir = FSDirectory.open(new File("c://indexFile")); // 创建IndexReader将搜索目录读取到内存 IndexReader indexReader = DirectoryReader.open(dir); // 创建IndexSearcher准备搜索 IndexSearcher indexSearcher=new IndexSearcher(indexReader); // 创建QueryParser对查询语句进行语法分析 QueryParser parser = new QueryParser(Version.LUCENE_47, "content", analyzer); // 根据搜索关键字创建Query生成查询语法树 Query query = parser.parse("aa"); //获取搜索结果 TopDocs td=indexSearcher.search(query, 1000); ScoreDoc[] sds =td.scoreDocs; for(ScoreDoc sd : sds){ Document d = indexSearcher.doc(sd.doc); System.out.println(d.get("path")); }
主要通过IndexReader对象读取索引文件。通过QueryParser对象指定语法分析器和对document的哪个字段进行查询。Query对象指定搜索的关键字。通过IndexSearcher对象的search方法返回搜索结果集TopDocs。
运行完上面代码后,会输出包含关键字aa的txt文件的路径。比如C:\dataFile\1.txt
相关推荐
lucene入门小例子
NULL 博文链接:https://kylinsoong.iteye.com/blog/719415
根据lucene demo 写的一个入门小例子,很小,希望对你有所帮助,不好别骂!
Lucene 简单入门程序实例
lucene3.6入门实例教程 完整代码示例,lucene入门学习很好的资料
lucene 3.0 入门实例项目,迅速教会你怎么使用3.0API
说明: 例子是根据lucene3.6写的,也可以说是直接copy别人的。 包括参考文章的代码,以及修改部分之后的代码
Lucene的功能请打,方法众多。主要介绍了Lucene的功能模块及其调用代码,实际使用中可以具体修改。最后还有一个常见的Lucene实例与解析。
Lucene 创建索引查询的入门实例,可以直接导入工具
lucene入门例子,有创建索引和检索。详情:http://blog.csdn.net/authorzhh/article/details/7869806
我自己写的一个lucene搜索引擎的简单入门例子源代码 对照lucene,相当的易懂。api我这也有,含JE分词器。
Lucene5.2.1 入门学习例子. 这是别人的例子源码。可以参考。内有使用说明。
介绍Lucene的原理,处理流程,以及实例代码,全面分析介绍!
Luene2.4版本在以前的基础上进行了不少的改动,性能上也提升了不少,这里边学习边写了一个简单的例子,给初学者行个方便!
lucene实例是一个比较详细的例子,包括lucene的入门到高级实例,代码里有比较详细的实例,所有的实例都是通过junit来测试的。实例包括各种搜索:如通配符查询、模糊查询、查询结果的分页、中文分词器、自定义分词器...
包含最新lucene5.2.1的入门经典案例,以及程序中所需的lucene-core-5.2.1.jar、lucene-analyzers-common-5.2.1.jar等几个jar包。代码可运行。
Eclipse工程文件,全文检索 lucene-5.2.1 入门Eclipse工程实例,福利放送,与lucene3结果比对
Lucene3.0和Lucene2.0API有多处改动,该实例用Luence3.0实现
NULL 博文链接:https://cuics-100.iteye.com/blog/1057266
该书详细讲解了搜索引擎与信息检索基础,Lucene入门实例,Lucene索引的建立,使用Lucene进行搜索,排序,过滤和分页,Lucene的分析器,对Word、Excel和PDF格式文档的处理,Compass搜索引擎框架,Lucene分布式和...