首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java开源>正文

lucene2.0学习文档

http://www.oklinux.cn  2008-03-07  来源: ccidnet baocl  会员收藏  游客收藏  【 】 

Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。其功能非常的强大,api也很简单。总得来说用Lucene来进行建立和搜索与操作数据库是差不多的,Document可以看作是数据库的一行记录,Field可以看作是数据库的字段。用lucene实现搜索引擎就像用JDBC实现连接数据库一样简单。

值得一提的是:2006年6月1号Lucene2.0发布,它与以前广泛应用和介绍的Lucene 1.4.3并不兼容。 有了很大的改进和优化,这里只介绍的是Lucene 2.0。

Lucene2.0的下载地址是 http://apache.justdn.org/lucene/java/

大家先看一个例子,通过这个例子来对lucene的一个大概的认识。 一个Junit测试用例:(为了让代码清晰好看,我们将异常都抛出)

a) 这是一个建立文件索引的例子

public void testIndexHello() throws IOException{ Date date1 = new Date(); //可以说是创建一个新的写入工具 //第一个参数是要索引建立在哪个目录里 //第二个参数是新建一个文本分析器,这里用的是标准的大家也可以自己写一个 //第三个参数如果是true,在建立索引之前先将c:\\index目录清空。 IndexWriter writer = new IndexWriter("c:\\index",new StandardAnalyzer(),true); //这个是数据源的文件夹 File file = new File("c:\\file"); /** * 例子主要是对C:\\file目录下的文件的内容建立索引,将文件路径作为搜索内容的附属 */ if(file.isDirectory()){ String[] fileList = file.list(); for (int i = 0; i < fileList.length; i ){ //建立一个新的文档,它可以看作是数据库的一行记录 Document doc = new Document(); File f = new File(file, fileList[i]); Reader reader = new BufferedReader(new FileReader(f)); doc.add(new Field("file",reader));//为doument添加field doc.add(new Field("path",f.getAbsolutePath(),Field.Store.YES,Field.Index.NO)); writer.addDocument(doc); } } writer.close();//这一步是必须的,只有这样数据才会被写入索引的目录里 Date date2 = new Date(); System.out.println("用时" (date2.getTime()-date1.getTime()) "毫秒"); } 注意:因为建立索引本来就是费时,所以说最后输出的用时会比较长,请不要奇怪。

b)一个通过索引来全文检索的例子

public void HelloSearch() throws IOException, ParseException{ //和上面的IndexWriter一样是一个工具 IndexSearcher indexSearcher = new IndexSearcher("c:\\index"); QueryParser queryParser = new QueryParser("file",new StandardAnalyzer()); //new StandardAnalyzer()这是一个分词器 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //这个地方Query是抽象类大家也注意一下,下面会讲到的 Query query = queryParser.parse(br.readLine()); Hits hits = indexSearcher.search(query); Document doc = null; System.out.print("正搜索................"); for (int i = 0; i < hits.length(); i ){ doc = hits.doc(i); System.out.println("内容是:" doc.get("file"));//注意这里输出的是什么 System.out.println("文件的路径是:" doc.get("path")); } } 通过上面的两个例子应该可以看出Lucene还是比较简单的。 运行一下上面的两个例子,大家可能会说怎么doc.get(“file”);返回的是空呢,我们马上会讲到。 下面讲一下索引的建立 其实从上面的例子就可以看出建立索引就用到Document,IndexWriter,Field。 最简单的步骤就是: 首先分别new 一个Document,IndexWriter,Field,然后用Doument.add()方法加入Field.其次用IndexWrtier.addDocument()方法加入Document。 最后调用一下IndexWriter.close()方法关闭输入索引,这一步非常的重要只有调用这个方法索引才会被写入索引的目录里,而这是被很多初学的人所忽略的。 Document没有什么好介绍的,把它的作用看成数据库中的一行记录就行。 Field是一个比较重要的也是比较复杂的,看一下它的构造函数有5个: Field(String name, byte[] value, Field.Store store) Field(String name, Reader reader) Field(String

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页

上一篇:Linux下C 程序的异常处理技巧   下一篇:VC 中的Progress控件如何使用


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Apache开源项目分类列表
·JDK源码分析:java.lang.Boolean
·jICQ 服务器和客户端源码
·日志操作之JAVA-Apache
·基于Eclipse 3.0的SWT编程
·开源技术 Eclipse使用技巧
·开源技术:Eclipse 插件功能研究
·开源技术:在Eclipse中构建备忘单
·开源技术之Tomcat数据源配置总结
·开源技术:tomcat5.0下配置ssl
·万能全文检索:Aperture
·开源搜索系统--Red-Piranha
·开创性的JSP定制标记应用
·在Struts2中集成Spring详细讲解
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·在Struts2中集成Spring详细讲解
·开创性的JSP定制标记应用
·开源搜索系统--Red-Piranha
·万能全文检索:Aperture
·开源技术:tomcat5.0下配置ssl
·开源技术之Tomcat数据源配置总结
·开源技术:在Eclipse中构建备忘单
·开源技术:Eclipse 插件功能研究
·开源技术 Eclipse使用技巧
·基于Eclipse 3.0的SWT编程
·JDK源码分析:java.lang.Boolean
·Apache开源项目分类列表
  阅读排行
·开源搜索系统--Red-Piranha
·基于Eclipse 3.0的SWT编程
·日志操作之JAVA-Apache
·开创性的JSP定制标记应用
·万能全文检索:Aperture
·开源技术:tomcat5.0下配置ssl
·开源技术之Tomcat数据源配置总结
·开源技术:在Eclipse中构建备忘单
·开源技术:Eclipse 插件功能研究
·开源技术 Eclipse使用技巧
·JDK源码分析:java.lang.Boolean
·Apache开源项目分类列表
·jICQ 服务器和客户端源码
·在Struts2中集成Spring详细讲解
网摘收藏: