目录
1.你了解搜索引擎吗
常用得搜索引擎:谷歌、百度
数据的分类:
结构化的数据:具有固定格式或长度的数据。
非结构化数据:全文数据,不定长或无固定格式的数据。
对于非结构化数据(全文数据)的搜索主要方法:顺序扫描法、全文搜索法
1.顺序扫描法
按照顺序扫描的方式查找特定的关键词
效率低下
2.全文搜索
对非结构化数据的信息进行提取,重新组织成为有一定结构的数据后进行搜索,从而达到搜索相对较快的要求。
从非结构化数据中提取并从新组织的信息,称之为索引。
2.全文搜索引擎的工作原理
计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就会根据事先建立的索引进行查找,并将查找的结果反馈给用户。
3.为什么要用搜索引擎
1.数据类型
全文搜索支持非结构化数据的搜索,可以更好的快速搜索大量存在的任何单词。
2.搜索性能
当数据量达到千万级别的时候,或者含有like等搜索条件的时候,mysql不会走索引,性能会变差。
3.灵活搜索
不必要求用户一定输入正确才能进行查询,当用户输入一些关键字的时候可以给出相应的提示并进行查出。
4.索引的维护
一般传统数据库对于全文搜索,很难去实现,需要扫描整个表,即使有索引,在insert和update操作的时候都会重新构建索引,维护很麻烦。
4.全文索引引擎的应用场景
- 被搜索的数据对象大多是非结构化文本数据。
- 文本数据量达到数十万或百万。
- 支持大量基于交互式文本查询。
- 需求非常灵活的全文搜索查询。
- 对安全事务,非文本数据操作的需求相对较少的情况。
5.常见搜索引擎
1.Lucene
Lucene是一个java全文搜索引擎,完全用Java编写。是一个代码库和API,通过简单的API提供强大的功能。
2.Solr
Solr是基于Lucene的Java库的开源搜索平台。可以提供分布式索引、复制、负载均衡查询以及自动故障转移和恢复。
具有很多强大的功能:全文搜索、突出、分面搜索、实时索引、数据库集成
3.ElasticSearch
ElasticSearch是一个开源,基于Apache Lucene库构建的Restful搜索引擎。
它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTP Web界面和无架构JSON文档。
主要功能:分布式搜索、数据分析、分组和聚合
应用场景:维基百科、GitHub、电商网站、日志数据分析、站内搜索