分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Lucene初体验——Hello Word实现

发布时间:2023-09-06 01:43责任编辑:熊小新关键词:暂无标签

1、创建索引

 1 /** 2 ?????* 建立索引 3 ?????*/ 4 ????public void index(){ 5 ????????IndexWriter writer=null; 6 ????????try { 7 ????????????//1.创建Directory 8 ????????????//Directory directory=new RAMDirectory();//建立在内存中 9 ????????????Directory directory=FSDirectory.open(new File("D:/lucene/lucene01"));//创建在硬盘上10 ????????????//2.创建IndexWrite11 ????????????IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35));12 ????????????writer=new IndexWriter(directory, iwc);13 ????????????//3.创建Document对象14 ????????????Document doc=null;15 ????????????//4.为Document添加Field16 ????????????File f=new File("D:/lucene/example");17 ????????????for (File file:f.listFiles()) {18 ????????????????doc=new Document();19 ????????????????doc.add(new Field("content",new FileReader(file)));20 ????????????????doc.add(new Field("filename",file.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED));21 ????????????????doc.add(new Field("path",file.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));22 ????????????????//5.通过Index Writer添加文档到索引中23 ????????????????writer.addDocument(doc);24 ????????????}25 26 27 28 ????????} catch (IOException e) {29 ????????????// TODO Auto-generated catch block30 ????????????e.printStackTrace();31 ????????}finally{32 ????????????if(writer!=null){33 ????????????????try {34 ????????????????????writer.close();35 ????????????????} catch (IOException e) {36 ????????????????????// TODO Auto-generated catch block37 ????????????????????e.printStackTrace();38 ????????????????}39 ????????????}40 ????????}41 42 ????}

2、搜索

 1 /*** 2 ?????* 搜索 3 ?????*/ 4 ????public void searcher(){ 5 ????????try { 6 ????????????//1.创建Directory 7 ????????????Directory directory=FSDirectory.open(new File("D:/lucene/lucene01"));//创建在硬盘上 8 ????????????//2.创建IndexReader 9 ????????????IndexReader reader=IndexReader.open(directory);10 ????????????//3.根据IndexReader创建IndexSearcher11 ????????????IndexSearcher searcher=new IndexSearcher(reader);12 ????????????//4.创建搜索的Query13 ????????????//创建parser来确定要搜索文件的内容,第二个参数表示搜索的域14 ????????????QueryParser parser=new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35));15 ????????????//创建query,表示搜索域为content中包含Java的文档16 ????????????Query query=parser.parse("migrate");17 ????????????//5.根据searcher搜索并且返回TopDocs18 ????????????//10 搜索条数19 ????????????TopDocs tds=searcher.search(query, 10);20 ????????????//6.根据TopDocs获取ScoreDoc对象21 ????????????ScoreDoc[] sds= tds.scoreDocs;22 ????????????for (ScoreDoc sd : sds) {23 ????????????????//7.根据searcher和ScoreDoc对象获取具体的document对象24 ????????????????Document d=searcher.doc(sd.doc);25 ????????????????//8.根据Document对象获取需要的值26 ????????????????System.out.println(d.get("filename")+"["+d.get("path")+"]");27 ????????????}28 ????????????29 ????????????30 ????????????//9.关闭reader31 ????????????reader.close();32 ????????} catch (CorruptIndexException e) {33 ????????????// TODO Auto-generated catch block34 ????????????e.printStackTrace();35 ????????} catch (IOException e) {36 ????????????// TODO Auto-generated catch block37 ????????????e.printStackTrace();38 ????????} catch (ParseException e) {39 ????????????// TODO Auto-generated catch block40 ????????????e.printStackTrace();41 ????????}42 ????}

3、Junit测试

 1 ????????@Test 2 ????public void testIndex(){ 3 ????????HelloLucene hl=new HelloLucene(); 4 ????????hl.index(); 5 ????} 6 ?????7 ????@Test 8 ????public void testSearch(){ 9 ????????HelloLucene hl=new HelloLucene();10 ????????hl.searcher();11 ????} ???

Lucene初体验——Hello Word实现

原文地址:https://www.cnblogs.com/guoxiangyue/p/8458118.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved