lucene 入门实例
2017-01-06 11:32
267 查看
1、建立索引
/** * 建立索引 */ public void index(){ IndexWriter writer=null; try { //1.创建Directory:创建索引的保存地址 // Directory directory=new RAMDirectory();//建立在内存中 Directory directory=FSDirectory.open(new File("E:/lucene/index01")); //2.创建IndexWriter, 是用来操作(增、删、改)索引库的 IndexWriterConfig iwc=new IndexWriterConfig( Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)); writer=new IndexWriter(directory, iwc); //3.创建Document对象 Document doc=null; //4.为Document添加Field File f= new File("E:/lucene/example"); for(File file:f.listFiles()){ doc=new Document(); doc.add(new Field("content", new FileReader(file))); doc.add(new Field("fileName",file.getName(), Field.Store.YES,Field.Index.NOT_ANALYZED)); doc.add(new Field("path",file.getAbsolutePath(), Field.Store.YES,Field.Index.NOT_ANALYZED)); //5.通过IndexWriter添加文档到索引中 writer.addDocument(doc); } } catch (CorruptIndexException e) { e.printStackTrace(); } catch (LockObtainFailedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(writer!=null) try { writer.close(); } catch (CorruptIndexException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2、搜索
/** * 搜索 */ public void searcher(){ try { //1.创建Directory:去哪里搜索 Directory directory=FSDirectory.open( new File("E:/lucene/index01")); //2.创建IndexReader IndexReader reader=IndexReader.open(directory); //3.根据IndexReader创建IndexSearcher IndexSearcher searcher=new IndexSearcher(reader); //4.创建搜索的Query //创建parser来确定要搜索文件的内容,第二个参数表示搜索的域 QueryParser parser=new QueryParser( Version.LUCENE_35, "content",new StandardAnalyzer(Version.LUCENE_35)); //创建Query,表示搜索域为content中包含java的文档 Query query=parser.parse("java"); //5.根据searcher搜索并且返回TopDocs TopDocs tds=searcher.search(query,2); System.out.println("总共有【" + tds.totalHits + "】条匹配结果"); //6.根据TopDocs获取ScoreDoc对象 ScoreDoc[] sds=tds.scoreDocs; for(ScoreDoc sd:sds){ //7.根据searcher和TopDocs对象获取Document对象 Document d = searcher.doc(sd.doc);//sd.doc:文档内部编号 //8.根据Document对象获取需要的值 System.out.println(d.get("fileName")+ "["+d.get("path")+"]"); } //9.关闭reader reader.close(); } catch (CorruptIndexException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } }
创建索引库的时候出现write.lock这个文件说明创建出现异常,一般都是IndexWriter 没有做关闭的处理,只需要关闭即可!
感觉这篇文章挺不错,希望帮到有需要的同学!
文章出自这里>>
相关文章推荐
- Lucene3.0.0 入门实例
- JAVA:lucene 入门学习,简单实例模访google搜索
- lucene入门实例
- Lucene框架入门实例
- 全文检索:Apache Lucene框架入门实例 推荐
- lucene 搜索入门实例
- Lucene入门实例
- lucene入门 ==》 实例
- Lucene入门以及简单实例
- Lucene3.6入门实例
- lucene3.6入门实例
- Lucene.Net 入门级实例 浅显易懂。。。
- Lucene入门实例
- Lucene入门项目实例---比较Lucene方式搜索与传统String方式搜索的效率
- lucene3.6入门实例
- Lucene入门实例
- Lucene入门实例
- lucene3.6.1 经典案例 入门实例
- lucene4.0入门实例
- lucene&IKAnalyzer入门实例