我们生活中的数据总体分为两种:结构化数据和非结构化数据。
结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。
非结构化数据:指不定长或无固定格式的数据,如 互联网数据、邮件,word文档等。非结构化数据又称全文数据
对非结构化数据也即全文数据的搜索主要有两种方法:顺序扫描法和反向索引法。
顺序扫描法:所谓顺序扫描法,就是顺序扫描每个文档内容,看看是否有要搜索的关键字,实现查找文档的
功能,也就是根据文档找词。
反向索引法:所谓反向索引,就是提前将搜索的关键字建成索引,然后再根据索引查找文档,也就是根据词
找文档。
全文检索:先建立索引,再根据索引搜索文档的过程
全文检索应用场景:站内搜索,搜索引擎
全文检索技术:Lucene, Solr, ElasticSearch
ES与Solr比较:
Solr需要借助Zookeeper进行分布式管理,ES自身带有分布式管理功能
Solr支持多种格式个数据,ES只支持json格式
Solr提供的功能更多,ES更注重核心功能,高级功能由第三方插件提供。
Solr在传统的搜索应用(用户搜索的是从信息库里筛选的信息)中表现好于ES, 但在处理实时搜索应用时效率明显低于ES
全文检索的流程分为两大流程:索引创建、搜索索引
索引创建:将现实世界中所有的结构化和非结构化数据提取信息,创建索引的过程。
搜索索引:就是得到用户的查询请求,搜索创建的索引,然后返回结果的过程。