02.Lucene实现全文检索

Lucene介绍

Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。

依赖配置

Lucene是开发全文检索功能的工具包,从官方网站(http://lucene.apache.org/ )下载Lucene4.10.3,并解压得到开发包。

常用核心包

  • lucene-core-4.10.3.jar
  • lucene-analyzers-common-4.10.3.jar
  • lucene-queryparser-4.10.3.jar

Lucene的工作原理


创建索引的过程

  • 原始文档
    • 它是用户需要查询的数据,可以使数据库中结构化的数据,也可以是一些非结构化的文档
  • 获得文档
    • 对于硬盘上的文本文件,可以通过流的方式来获得文档的内容;对于pdf、doc、xls等文件可通过第三方提供的解析工具读取文件内容,比如Apache POI读取doc和xls的文件内容;互联网上的内容需要通过爬虫来获得,还有数据库中的结构化数据可以通过一般的方式获取
  • 构建文本对象
    • 该文本对象是对需要建立索引数据的一个抽象,可以往这个文本对象中添加很多的Field,最终这个文本对象会被持久化保存在索引库中
  • 分析文档
    • 分析文档所做的事情就是分词,根据分词来建立一个和Field对应索引
  • 创建索引
    • 顾名思义,创建索引就是根据分词结果建立索引并写入索引库的过程
  • 索引库
    • 索引库是文本对象持久化和索引保存的一个文件,也可以是一个内存索引库

查询索引的过程

  • 创建查询
    • 查询包含精确查询以及分词后查询,还有多种查询结果的一个组合
  • 执行查询
    • 创建查询的到的查询结果只是文本对象Document在索引库中的一个ID,还要根据这个ID来执行查询获得完整的文本对象
  • 渲染结果
    • 渲染结果并不是Lucene应该做的,而是View视图层应该考虑的事情

posted @ 2017-02-28 11:43  Wesly186  阅读(163)  评论(0编辑  收藏  举报