信息检索的概念信息检索(Information Retrieval)是指信息按一定的方式组织起来,并根据信息用户的需要找出有关的信息的过程和技术。狭义的信息检索就是信息检索过程的后半部分,即从 信息集合中找出所需要的信息的过程,也就是我们常说的信息查寻(Information Search 或Information Seek)。 我们在下边研究的lucene就是对信息做全文检索的一种手段,或者说是一项比较流行的技术,跟google、baidu等专业的搜索引擎比起来会有一定的差距,但是对于普通的企业级应用已经是足够了。 什么是luceneLucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的 查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中 实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。 现在最新的稳定版本是3.6,而且4.0alpha版本也已经推出。 lucene能做什么首先要明确一点,lucene只是一个软件类库,或者一个工具箱,而并不是一个完整的搜索程序。但是它的API非常简单,可以让你不用了解复杂的索引和搜索实现的情况下,通过它提供的API,来完成非常复杂的事务处理。 你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了;你也可以写个自己的搜索引擎…… 应用程序和lucene之间的关系lucene的工作过程是首先建立索引,将索引保存,然后对索引进行搜索,并且根据搜索的结果找到对应的数据的过程。 关系结构如下: 图:应用程序和lucene之间的关系 lucene中的几大组件一、索引组件 创建索引的过程就是首先“获取内容”,然后根据获取的内容“建立文档”,对文档进行“文档分析”,最后对文档建立“文档索引”的过程。 1、获取内容 获取内容的手段很多,可以从上图的输入渠道中看到,包括数据库、文件系统、网络等多种渠道。 在有些情况下,获取内容的工作很简单,比如索引指定目录下的文件、将数据库中的内容读出并进行索引等。 但是有些情况下,获取内容的工作会很复杂,如操作文件系统、内容管理、各种web站点的数据等。 内容获取完全可以通过下面提供的开源软件进行获取,当然这里只是列出了其中的一部分:
2、建立文档 文档是lucene中建立的小数据块,也就是说,必须先将这些获得的内容转换成文档,文档中几个带值的域主要包括:标题、正文、摘要、作者和链接等。 lucene提供了API来建立域和文档,但不提供任何建立它们的程序逻辑。 有一些应用可以很好的完成这些工作,下面也列出其中一部分,仅供参考:
3、文档分析 就是分析如何建立索引,怎样规划,lucene中提供了大量内嵌的分析器能让你轻松控制这些操作。 4、文档索引 也就是建立索引的过程,并且通过一个异常简单的API来完成索引操作。 二、搜索组件 搜索处理的过程就是用户根据“用户搜索界面”,“建立查询”,并且根据“搜索查询”,得到“展现结果”的过程。 1、用户搜索界面 我们最熟悉的当然就是baidu和google了。 图:baidu搜索界面 2、建立查询 根据提交过来的搜索请求,将查询的条件组合起来并且交给lucene的查询解析器中,并且对查询的内容进行分析处理的过程。 3、搜索查询 根据查询解析器组合的查询条件,查询检索索引并返回与查询语句匹配的文档的过程。 4、展现结果 一旦获得匹配的文档就将结果展现出来的过程,类似于我们日常用到的搜索后的列表。 图:baidu展现结果页面 三、其它组件 1、管理组件 如爬虫要爬取时的规则的规则、时间等需要在管理界面进行统一的设置,对于搜索日志的管理等。 2、分析组件 对于某些关键詷搜索的频率,次数及搜索的习惯等进行分析的部分。 3、搜索范围 即搜索的范围是本机的,还是在分布式环境下的,还是基于其它系统的,也就是一个范围的划分和界定。
分类: java |
|
来自: 贾朋亮博客 > 《一步一步学lucene》