全文检索简介

全文检索

全文数据中进行检索就叫全文检索(全文搜索)。是基于文本的搜索。

文本可分为:

结构化数据
指具有“固定格式”或“有限长度”的数据,如数据库,元数据等;可以用二维表结构来逻辑表达实现的数据

非结构化数据
指不定长或无固定格式的数据,如邮件,word文档等;非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、各类报表、图像和音频/视频信息等等。

半结构化数据
如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。

全文数据搜索方式

顺序扫描法(Serial Scanning)

所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。比如Window自带的搜索,在数据库中扫描不带索引文本字段等。

这种方法效率非常低,在数据量庞大的情况下非常消耗性能。

全文检索

非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),关系数据库中存储的都是结构化数据,因此检索都比较快。

对于非结构化的数据那么把我们的非结构化数据想办法弄得有一定结构不就行了吗?从非结构化数据中提取出的然后重新组织的信息,我们称之索引。即为文本数据建立类似字典目录,从而提高检索速度。

全文检索的特点

1、搜索效率高
2、相关度最高的排在最前面,官网中相关的网页排在最前面;(百度搜索)
3、对摘要进行了截取;(截取核心思想如论文摘要)
4、关键词的高亮。
5、只关注文本,不考虑语义。(不考虑搜索的文本的含义)

比如在输入框中输入“中国的首都在哪里”,搜索引擎不会以对话的形式告诉你“在北京”,而仅仅是列出包含了搜索关键字的网页。
在搜索引擎中查询关键词或句子时,你在最后加上问号也是没有意义的做法,会直接被过滤掉

使用场景

替换数据库模糊查询,提高查询速度

1、数据库缺点

全文检索也是一种搜索,我们之前也学过了数据库也支持搜索,如果这两种搜索用途一致,那就没必要学习全文检索了。下面就来把全文检索和数据库来做一个对比,简述下数据库搜索的弊端。
有这样一句SQL:Select * from article where content like ‘%java%’,执行以后会有如下结果: Select * from article where content like ‘java%’
在这里插入图片描述
根据我们写的SQL中使用的like可以知道,这种方式在搜索时不会索引。在数据库中复制上面的SQL,在SQL前添加explain命令,代表解释这句SQL,可以看到:

这是一个全表查询,在数据库中使用like查询的字段,会按照内容顺序,逐字扫描。需要的内容越是靠后,查询的时间久越长。 ----查询速度慢

不光包含java单词的数据会被查询出来,如果内容中有JavaScript这个单词的同样也会被查询出来。如果刚好100条结果99条都包含JavaScript,只有1条是我们真正要的结果。面对这么多无用的数据,用户肯定会非常无奈。 ----搜索效果不好

100条结果中,全字匹配的,和一字相差,多字相差的结果完全是混乱排列,不能把最符合的放在前面。在数据库中排序主要是按照时间,数字大小,对于内容的排序可能就开发者也摸不准是怎样的规则。 ----没有相关度排序

2 、具体说明

关系数据库中进行模糊查询时,数据库自带的全文索引将不起作用,此时需要通过全文检索来提高速度。

比如:网站系统中针对内容的模糊查询;

select * from article where content like '%java%'

ERP系统中产品等数据的模糊查询,BBS、BLOG中的文章搜索等;

全文索引是搜索引擎的基础

各种搜索引擎运行依赖于全文检索,百度谷歌的界面看着很简单,技术主要体现在后台全文检索技术的实现上,他们自己都有基于全文检索做了实现,这些技术肯定不是开源的,不然他们在整个是市场也没啥优势了。

只对“指定领域”的网站进行索引与搜索(即垂直搜索)

垂直领域:

如“818工作搜索”、“有道购物搜索”,拉钩网(只是针对专业的互联网搜索)
比如我们过来学习,需要找房子吧。为了解决这个问题我们首先会想到什么?到58同城等网站里搜索。那找工作呢?这类网站非常多了,有中华英才网、智联招聘,51job(前程无忧),那么要在这些网站中找工作,分别得在各个网站中进行搜索,同时我们还得在每个网站中维护简历,简直太麻烦了。而垂直检索就是为了解决这类问题的。

在word、pdf等各种各样的数据格式中检索内容

特别是pdf,能够支持搜索的主要还是指内容是文字的。搜索到关键字以后大多会以黄底或者蓝底高亮显示。 比如在ctrl+F 搜索文字

其它场合:比如搜狐拼音输入法、Google输入法等

我们常用的输入法也是使用的全文检索,输入法对词库中的词都建立了目录,我们通过拼音甚至拼音首字母都可以快速找到需要的词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值