Lucene全文检索

本文深入解析全文检索技术,包括结构化与非结构化数据的区别,介绍Lucene、Solr及ElasticSearch等主流Java检索技术。阐述了全文检索的流程,创建索引与搜索索引的步骤,并对比了顺序扫描法与反向索引法的不同。

一:什么是全文检索
我们生活中数据总体分为两种,结构化数据和非结构化数据。

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库、元数据等。
  • 非结构化数据:指不定长或无固定格式的数据,如互联网数据、邮件、word文档等。非结构化数据又有一种叫法叫全文数据。

二:目前主流的Java全文检索技术

  • lucene:Java语言全局检索技术的底层实现。使用该技术需要对Lucene的API底层原理非常了解,而且需要编写大量的java代码。

  • solr:基于lucene简化开发,提示性能、扩展性。通过solrCloud可以实现分布式搜索。使用Java实现的一个web应用,可以使用rest方式的http请求,进行远程的API调用。

  • ElasticSerach:基于lucene,更倾向于实现实时搜索。可以使用rest方式的http请求,进行远程api的调用。
    按照数据的分类,搜索也分为两种:

  • 对结构化数据的搜索:如对数据库的搜索,用sql语句。如对元数据的搜索,如利用windows搜索。

  • 对非结构化的数据搜索:如Google、百度等。

对非结构化数据即全文数据的搜索主要有两种方法:顺序扫描法和反向索引法。

  • 顺序扫描法:所谓顺序扫描法,就是顺序扫描每个文档的内容,看看是否有要搜索的关键字,实现查找功能,也就是根据文档找词。
  • 反向索引法:所谓反向索引,就是提前将搜索的关键字建成索引,然后在根据索引查找文档,也就是根据词找文档。

这种先建索引,再对索引进行搜索文档的过程就叫全文检索

三:全文检索流程分析
在这里插入图片描述
全文检索分为两大流程:创建索引、搜索索引

  • 创建索引:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
  • 搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。

四:创建索引流程
在这里插入图片描述
数据库一条记录会存储为一个Document对象,一条记录的一列会存储为一个Field
name相当于数据库的列名,value相当于数据库列的值。不会将数据库的所有数据存储到索引库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值