02.Lucene实现全文检索

news/2024/7/19 8:59:02 标签: 数据库, 爬虫

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的工作原理

1111422-20170228114318860-2019430097.png
创建索引的过程

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

查询索引的过程

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

1111422-20170228114319563-1203859664.png

转载于:https://www.cnblogs.com/wesly186/p/8e30ae6f99b09d1bc688b4ffc534d507.html


http://www.niftyadmin.cn/n/820732.html

相关文章

第 2-8 课:Spring Boot 构建一个 RESTful Web 服务

现在越来越多的企业推荐使用 RESTful 风格来构建企业的应用接口,那么什么是 RESTful 呢? 什么是 RESTful RESTful 是目前最流行的一种互联网软件架构。REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在他 2000 年博士论文中提出的…

java zookeeper分布式原子操作_基于 ZooKeeper 的分布式锁实现

什么是Zookeeper?Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的功能都是分布式系统中非常底层且必不可少的基本功能,但是如果自己实现这些功能而且要达到高吞吐、低延迟同时还要保持一致性和可用性&a…

第 2-7 课:使用 Spring Boot 上传文件到 FastDFS

什么是 FastDFS FastDFS 是一个开源的轻量级分布式文件系统,它解决了大数据量存储和负载均衡等问题,特别适合以中小文件(建议范围:4 KB < file_size < 500 MB)为载体的在线服务,如相册网站、视频网站等。在 UC 基于 FastDFS 开发向用户提供了网盘、社区、广告和应…

java获取文件中的内容为空_从文件中读取文本后的java,打印开始时将为“ null”...

小编典典考虑循环的第一次迭代。的值str是零&#xff0c;和值sCurrentLineIS "<?xml version"1.0"?>"。在字符串连接中&#xff0c;空引用将转换为字符串“ null”。例如&#xff1a;String x null;String y "a";String z x y; // &…

Mongodb副本集的搭建

MongoDB 副本集&#xff08;Replica Set&#xff09;是有自动故障恢复功能的主从集群&#xff0c;有一个Primary节点和一个或多个Secondary节点组成。副本集的工作模式如下图&#xff1a; 副本集中数据同步过程&#xff1a; Primary节点写入数据&#xff0c;Secondary通过读取P…

mysql提权导出dll_MYSQL提权总结

最近在测试一个项目&#xff0c;遇到了MYSQL数据库&#xff0c;想尽办法提权&#xff0c;最终都没有成功&#xff0c;很是郁闷&#xff0c;可能是自己很久没有研究过提权导致的吧&#xff0c;总结一下MYSQL提权的各种姿势吧&#xff0c;权当复习了。关于mysql提权的方法也就那么…

SElinux简介

/usr/sbin/sestatus -v 或 getenforce ----查看SELinux状态 -----临时关闭SELinux&#xff08;不用重启机器&#xff09;----- setenforce 0 ##设置SELinux 成为permissive模式 setenforce 1 ##设置SELinux 成为enforci…

第 2-5 课:Thymeleaf 页面布局

页面布局就是对前端的页面进行划分区域,每个区域有不同的职责,布局是为了更好地重复利用前端代码,避免大量重复性的劳动。在现有的前端系统中,页面布局成了前端开发最重要的工作之一,Thymeleaf 在设计之初对页面布局就有考虑,通过 Thymeleaf 的相关语法可以很容易地实现对…