public class LuceneUtil {
/**
* 创建索引
* @throws IOException
*/
public void index() {
//2.创建IndexWriter(用来添加索引)
IndexWriter indexWriter = null;
try {
//1.创建Directory
// Directory directory = new RAMDirectory(); 创建在内存中
Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene")); //创建在硬盘上
//2.创建IndexWriter
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36); //创建标准的分词器
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);
indexWriter = new IndexWriter(directory,iwc);
//3.创建Document对象(一个document对象就是一个索引)
Document document = null;
//4.为Document添加Field(位document对象添加搜索的内容)
File f = new File("D:/workspace/Lucence/document");
for(File file : f.listFiles()) {
document = new Document();
document.add(new Field("content",new FileReader(file))); //内容搜索
//
document.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NO));
document.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NO));
//把文档添加到索引中
indexWriter.addDocument(document);
}
//5.通过IndexWriter添加文档到索引中
} catch(Exception e) {
} finally {
try {
indexWriter.close();
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 搜索
*/
public void search() {
try {
//1.创建Directory
Directory directory = FSDirectory.open(new File("D:/workspace/Lucence/lucene"));
//2.创建IndexReader
IndexReader reader = IndexReader.open(directory);
//3.根据IndexReader创建IndexSearch
IndexSearcher search = new IndexSearcher(reader);
//4.创建搜索的Query
//创建parser要确定搜索的内容
QueryParser parser = new QueryParser(Version.LUCENE_36,"content",new StandardAnalyzer(Version.LUCENE_36));
Query query = parser.parse("s h e l l");//搜索内容(content)包含java的文档
//5.根据search搜索并且返回TopDocs
TopDocs tds = search.search(query, 10);
//6.根据TopDocs获取scoreDocs对象
ScoreDoc[] sds = tds.scoreDocs;
for (ScoreDoc scoreDoc : sds) {
//7.根据search和scoreDocs对象获取具体的Document对象
Document d = search.doc(scoreDoc.doc);
//8.根据Document对象获取需要的值
System.out.println(d.get("filename"));;
}
//9.关闭reader
reader.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
分享到:
相关推荐
有关lucene入门学习的PPT以及算法和倒排原理
lucene基础学习.pdf
lucene基础学习笔记&源码
Lucene的基础知识 1、案例分析:什么是全文检索,如何实现全文检索 2、Lucene实现全文检索的流程 a) 创建索引 b) 查询索引 3、配置开发环境 4、创建索引库 5、查询索引库 6、分析器的分析过程 a) 测试分析器的分词...
NULL 博文链接:https://kylinsoong.iteye.com/blog/719415
第一章 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各个接口的调用,包括高亮显示,范围搜索等
lucene入门实战.txt Lucene 的学习 .txt Lucene-2.0学习文档 .txt Lucene入门与使用 .txt lucene性能.txt 大富翁全文索引和查询的例子程序.txt 关于lucene2.0的创建、检索和删除功能的完整实现.doc web...
Lucene5.2.1 入门学习例子. 这是别人的例子源码。可以参考。内有使用说明。
说明: 例子是根据lucene3.6写的,也可以说是直接copy别人的。 包括参考文章的代码,以及修改部分之后的代码
这是笔者近期学习Lucene.net时所看书籍,受益良多,希望可以帮助更多人。包括Lucene快速学习手册、Lucene实战、Lucene搜索引擎开发进阶三份文档。
视频详细讲解,需要的小伙伴自行网盘下载,链接见附件,永久有效。 目前业界流行的ElasticSearch和Solr搜索...系统的学习Lucene全文检索技术,全面掌握搜索原理和底层知识,为学习其他应用层面搜索技术打下坚实的基础。
lucene3.6入门实例教程 完整代码示例,lucene入门学习很好的资料
如果你用过百度的搜索引擎,你就会知道搜索技术是多么的强大,尤其是在信息化的今天。本资源主要使用lucene技术来学习搜索引擎。
Lucene学习文档Lucene学习文档Lucene学习文档Lucene学习文档
Lucene 基础指南,学习lucene的好文档
lucene学习笔记,lucene入门必备材料
NULL 博文链接:https://iamyida.iteye.com/blog/2192938
很好的Lucene学习入门资料。lucene是纯java开发的,支持索引的建立和搜索
lucene学习开发入门教程,介绍了lucene的原理,用法。有相关代码和实例。lucene绝对的实用和经典教程。