全文检索基本概念,与结构化数据库对比及常见搜索引擎

目录

1、什么是全文搜索引擎?

1)数据分类

2)顺序扫描

3)全文搜索

4)什么是全文搜索引擎?

5)搜索引擎

2、为什么不用mysql做全文搜索

1)数据类型

2)搜索性能

3)灵活的搜索

4)索引的维护

5)适合全文索引引起的场景

3、常见的搜索引擎

1)Lucene

2)Solr

3)Elastic Search


1、什么是全文搜索引擎?

1)数据分类

  • 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等;对于结构化数据,我们一般都是可以通过关系型数据库(Mysql、Oracle)等table的方式存储和搜索,也可以建立索引,通过b-tree等数据接口快速所搜数据。
  • 非结构化数据:全文数据,指不定长或无固定格式的数据,如邮件,word文档等;对于非结构化数据,也即对全文数据的所搜主要有两种方法:顺序扫描法、全文检索法。

2)顺序扫描

  • 按照顺序扫描的方式查找特定的关键字。比如让你在一篇文章中,找出相应的文字出现在什么地方,那你肯定需要从头到尾的把文章阅读一遍,然后标记出关键字在那些地方出现过。
  • 这种方法的效率很低,如果文章很长,有几万字,等阅读完,需要花费很多时间。

3)全文搜索

  • 对非结构化数据进行顺序扫描很慢,我们可以把非结构化数据想办法弄得有一定结构;将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对这些有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这种方式就构成了全文搜索的基本思路。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

4)什么是全文搜索引擎?

  • 根据百度百科中的定义,全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户。

5)搜索引擎

Lucene、Solr、Elastic Search

2、为什么不用mysql做全文搜索

1)数据类型

  • 全文索引搜索很好的支持非结构化数据的搜索,可以更好地快速所搜大量存在的任何单词非结构化文本;例如 Google、百度类的网站搜索,它们都是根据网页中的关键字生成索引,我们在搜索的时候输入关键字,它们会将关键字即索引匹配到的所有网页返回;还有常见的项目中应用的日志的搜索等,对于这些非结构化的数据文本,关系型数据库搜索不能很好的支持。

2)搜索性能

  • 如果使用mysql做搜索,当数据库达到千万级别的时候,数据库进行模糊查询的时候就会很慢;如下面sql,进行全表扫描,效率就会很慢
select * from player where user_name like '%xxx%';

3)灵活的搜索

  • 如果我们想查出名字叫 james 的球员,但是用户输入了jame,我们想提示他一些关键字,如下图:

4)索引的维护

  • 一般传统型数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存长文本字段,因为进行全文搜索的时候需要扫描整个表,如果数据量大的话即使对SQL的语法进行优化,也是效果甚微。即使建立了索引,但是维护起来也很麻烦,对于 insert 和 update 操作都会重新构建索引。

5)适合全文索引引起的场景

  • 搜索的数据对象是大量的非结构化的文本数据。
  • 文本数据量达到数十万或数百万级别,甚至更多。
  • 支持大量基于交互式文本的查询。
  • 需求非常灵活的全文检索查询。
  • 对安全事务,非文本数据操作的需求相对较少的情况。

3、常见的搜索引擎

1)Lucene

Lucene是一个java全文搜索引擎,完全用java编写。Lucene 不是一个完整的应用程序,而是一个代码库和API,可以很容易的用于向应用程序添加搜索功能。

通过简单的API提供强大的功能:

  • 可扩展性的高性能索引
  • 强大、准确、高效的搜索算法
  • 跨平台解决方案

Apache 软件基金会

  • 在Apache软件基金会提供的开元软件项目的Apache社区的支持。
  • 但是Lucene只是一个框架,要充分利用它的功能,需要使用java,并且在程序中集成Lucene。需要跟多学习了解,才能熟练使用。

2)Solr

Solr 是一个机遇Lucene 的Java库构建的开源搜索平台,它以用户友好的方式提供Apache Lucene的搜索功能。它是一个成熟的产品,拥有强大而广泛的用户社区,它提供分布式索引,复制,负载均衡查询以及自动故障转移和恢复。如果它被正确部署然后管理的好,它就能够成为一个高度可靠,可扩展且容错的搜索引擎。很多互联网巨头,如:Netflix、eBay和亚马逊都使用Solr,因为它能够索引和搜索多个站点。

强大的功能:

  • 全文索引
  • 突出
  • 分面搜索
  • 实时索引
  • 动态集群
  • 数据库集成
  • NoSQL功能和丰富的文档处理

3)Elastic Search

Elastic Search 是一个开源的,基于Apache Lucene库构建的Restful 搜索引擎;

Elastic Search 是在Solr 之后几年推出的,他提供了一个分布式,多租户能力的全文搜索引擎,具有HTTP Web界面(REST

)和无架构JSON文档,ElasticSearch的官方客户端库提供Java、Groovy、PHP、Ruby、Perl、Python、.NET和javascript;

主要功能:

  • 分布式搜索
  • 数据分析
  • 分组和聚合

应用场景:

  • 维基百科
  • 电商网站
  • 日志数据分析
  • BI系统
  • 站内搜索
  • 篮球论坛
  • 商品架构监控网站
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值