全文搜索 简介

 

数据的分类
  • 结构化数据
    具有固定格式、有限⻓度的数据,一般用关系数据库来处理。
  • 非结构化数据
    全⽂数据,⽆固定格式、不定⻓,比如邮件、word⽂档内容。
非结构化数据的2种处理方式
  • 顺序扫描
    从前往后依次扫描,效率低下。比如在一篇文章中搜索“java”,会把这篇文章从前往后扫描,标出“java”出现的地方。
  • 全文搜索
    从⾮结构化数据中提取关键字,组织为索引。对每一个词都建立一个索引,指明该词在非结构化数据(比如一篇文章)中出现的次数和位置。用户搜索时根据事先建立的索引来查找,将查找结果反馈给用户。检索效率很高。
    以上也是全文所搜引擎的原理。
全文搜索的特点|优点
  • 对非结构化数据的搜索支持好。关系型数据库对结构化数据的支持较差。
  • 搜索性能高。在海量数据(GB、TB、PB级别)下,搜索性能极高。面对这种量级的数据,关系型数据库无能为力。
  • 搜索灵活。搜索某个关键字,可以给出相关提示|预选项;会自动纠错,比如关键字打成了javb,会返回java的搜索结果。关系数据库的模糊查询其实是精确匹配的,没有这么智能。
  • 索引维护容易。如果用关系数据库搞全文索引,insert、update都会重新构建索引,不好维护。

以上也是为什么不使用关系数据库做全文检索的原因。

 

 

全文搜索的使用场景
  • 存储、检索海量的非结构化文本数据
  • 需要使用交互式的⽂本查询,用户输入部分关键字,会有提供相应的预选项。
  • 需要⾮常灵活的全⽂搜索,用户输入有误也会自动纠错。
  • 对事务安全、写操作、非文本数据操作的需求相对较少。既然是全文搜索,关注的是搜索,注重读,对写操作的支持差一些。
主流的全文搜索引擎
  • Lucene

Lucene是⼀个Java写的全⽂搜索引擎。Lucene不是⼀个完整的应⽤程序,只是⼀个代码库、API,⽤于向应⽤程序添加搜索功能。

Lucene很强大,但集成使用很复杂,Solr、ES都是基于Lucene的,对Lucene进行了集成、封装,简化了操作。

  • Solr

十分成熟的一款搜索引擎,提供分布式索引、复制、负载均衡查询以及⾃动故障转移和恢复,⾼可靠、高容错、可扩展、实时索引,常用于企业级应用。

Netflix、eBay、Instagram、亚⻢逊都在使⽤Solr。

  • ElasticSearch

后起之秀,提供Restful风格的接口,分布式搜索,数据分析、分组、聚合。

维基百科、Stack Overflow、GitHub都在使用ES。

ElasticSearch的使用场景:论坛、电商⽹站、⽇志数据分析等需要站内检索海量纯文本的项目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值