【Java架构师入门到精通提升】lucene初探

全文检索场景
当你在使用百度、Google搜索信息时,当你在淘宝、京东搜索商品时你知道这些都是使用的什么技术可以很快搜索你想要的东东吗?正是全文检索技术。
全文检索概念
全文检索是将整本书、整篇文章中的任意内容信息查找出来的检索。它可以根据需要获得全文中有关章、节、段、句、词等信息,计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程。
经过几年的发展,全文检索从最初的字符串匹配程序已经演进到能对超大文本、语音、图像、活动影像等非结构化数据进行综合管理的大型软件。
什么是Lucene
Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的搜索引擎和索引引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。
案例描述
我们以一个案例来研究全文检索过程:实现一个资源管理器的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。
开发环境
从Lucene官方网站下载Lucene4.3.10,并解压。

Lucene4.3.10要求Jdk使用1.7以上,本教程使用1.7.0_72版本。
开发工具:eclipse indigo

Lucene包:
lucene-core-4.10.3.jar—Lucene核心包
lucene-analyzers-common-4.10.3.jar----Lucene分析包
lucene-queryparser-4.10.3.jar —Lucene查询包

其它:
commons-io-2.4.jar —用于读取磁盘文件内容
junit-4.9.jar—用于单元测试

Lucene全文检索过程
全文检索包括索引和搜索两个过程,先对要搜索的信息创建索引,再从索引中搜索信息。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取java进阶资料学习,无工作经验不要加哦!
如下图:
1、黄色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:
确定原始内容即要搜索的内容–》采集文档–》创建文档–》分析文档–》索引文档

2、蓝色表示搜索过程,从索引库中搜索内容,搜索过程包括:
用户通过搜索界面–》创建查询–》执行搜索,从索引库搜索–》渲染搜索结果

image

第一步:确定原始内容
原始内容是指要索引和搜索的内容。原始内容包括互联网上的网页、数据库中的数据、磁盘上的文件等。
本案例中的原始内容就是磁盘上的文件(本教程只搜索.txt文件),如下图:

image

第二步:获取原始内容
从互联网上、数据库、文件系统中等获取需要搜索的原始信息,这个过程就是信息采集,信息采集的目的是为了对原始内容进行索引。
         Lucene本身不提供信息采集的功能,这里我们通过Java流程读取磁盘文件的内容。

第三步:创建文档
获取原始内容的目的是为了索引,在索引前需要将原始内容创建成文档(Document),文档中包括一个一个的域(Field),域中存储内容。
这里我们可以将磁盘上的一个文件当成一个document,Document中包括一些Field(file_name文件名称、file_path文件路径、file_size文件大小、file_content文件内容),如下图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值