Lucene初体验——Hello Word实现

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.创建IndexWrite
11             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添加Field
16             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 block
30             e.printStackTrace();
31         }finally{
32             if(writer!=null){
33                 try {
34                     writer.close();
35                 } catch (IOException e) {
36                     // TODO Auto-generated catch block
37                     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创建IndexSearcher
11             IndexSearcher searcher=new IndexSearcher(reader);
12             //4.创建搜索的Query
13             //创建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搜索并且返回TopDocs
18             //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.关闭reader
31             reader.close();
32         } catch (CorruptIndexException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         } catch (IOException e) {
36             // TODO Auto-generated catch block
37             e.printStackTrace();
38         } catch (ParseException e) {
39             // TODO Auto-generated catch block
40             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     }    

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

时间: 2024-10-14 08:32:14

Lucene初体验——Hello Word实现的相关文章

树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED

开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图样 树莓派2 代B GPIO 图 [所需硬件] 一张TF卡,8G或者8G以上,我的是 [三星TF卡16g class10 EVO] 一根网线,让树莓派与路由器连接 一个5V 500MA 的普通USB电源,为树莓派供电 ,我试过了,5V 500ma没问题 一个树莓派2代B 一个普通路由器[如果你连路由

Shell脚本编程初体验

Shell脚本编程初体验 分类 编程技术 通 常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机 交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但 这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并 且自动

bash编程初体验(二)

bash编程初体验(二) read if case 概述 在本篇文章中,我们将介绍bash编程中有关if语句的简单用法,.如此,如果条件为真,if会执行一种指令,如果条件为假,if会选择执行另一种指令,这种执行就是所谓的选择结构,它能够改变命令的基本顺序流结构,以选择流的形式运行. 在有关if语句的论述中,我们还将介绍read命令,因为read命令可以方便地引入一个或多个变量,可以天然地与if语句结合:另外,除了if语句,还有一种常见的选择语句:case语句,其简单易用,高效简洁,是时的不二选择

语音识别之初体验

一.概述 作为最自然的人机交互方式 --语音,正在改变人们的生活,丰富多媒体技术的应用.语音识别技术是语音信号处理的一个重要分支,也是近年来很火的一个研究领域.随着科技的飞速发展,语音识别不仅在桌面PC和大型工作站得到了广泛应用,而且在嵌入式系统领域也占有一席之地,如智能家居.苹果的Siri.车载语音识别系统等.相信在不久的将来,语音识别技术必定会渗透在人们生活的每个角落. 二.语音识别系统的分类 语音识别按照说话人的说话方式可以分为孤立词(IsolatedWord)识别.连接词(Connect

VSTO学习笔记(十五)Office 2013 初体验

原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 2013平台,即VSTO 5.0. 本系列所有测试代码均在Visual Studio 2012 Ultimate RC + Office 2013 Professional Plus x64 Preview 上测试通过 为了配合Windows 8,微软的很多软件风格都逐渐Metro化,Office作为拳头

POI初体验

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 它的结构如下: HSSF - 提供读写Microsoft Excel格式档案的功能:HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”. 也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃.正规的API.通过HSSF,你可以用纯Java代码来读取.写入.修改Excel文件. XSSF - 提供读

.NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家介绍.NET平台下的文档型数据库RavenDB,虽然我以前也在小项目用过其他文档型数据库,但问题很多,小项目还可以,大项目就歇菜了.这个数据库我关注了很久,最近一直在看它的文档,所以把知道的先总结下来. .NET开源目录:[目录]本博客其他.NET开源项目文章目录 本文原文地址:http://www

python初体验之小小爬虫

小月月是个懒家伙,博客更新好慢... 前几天拿到某公司的面试题,要求在Linux/Ubuntu/Debian/Suse/Centos下用python2.7开发一个爬虫,抓取百度新闻搜索结果的前三页标题+url. 这可把对python一窍不通的小月月难住了,肿么办呢...哦,最简单有效直接的方法就是网上查资料,ok,go~! 首先感谢http://www.1point3acres.com/bbs/thread-83337-1-1.html跟http://blog.csdn.net/column/d

erlang 初体验

最近测试了一下 erlang的坑... 如不出意外.... 大家第一眼看到这语法... 心里第一句一定是"我擦.这TM都是啥!!!!!" 没有变量!!! 没有结构体!!! 没有循环!!! 好吧,至少我是这样想的. 找了半天..连个if也不知道怎么写.. 这记录一些基本常识.. -module(module_name)  %%定义模块 括号内的要和文件名相同. -export([fun1/1 fun2/2]) %%这里是导出2个函数对外使用  函数名/参数名. 一个简单的函数定义如下 f