1,什么是搜索?
1.1 搜索初印象
在百度中进行搜索这个问题,找到百度百科对于搜索的概念如下:
通常的理解,把搜索和百度划上等号,但是需要注意的是:百度!=搜索,这是不对的 !
1.2 垂直搜索
垂直搜索,就是对特定领域、针对特定人群、特定需求的搜索。相对应的搜索引擎就是垂直搜索引擎。
具有:专、精、深的行业特点。
互联网的搜索 举例:电商网站、招聘网站、新闻网站等。搜索“棒棒糖”,显示相关的订单、产品。
IT系统的搜索 举例:OA软件、办公自动化软件、会议管理、日程管理、项目管理、员工管理,搜索“joy”。
给出定义:搜索,就是在任何场景下,寻找需要的信息,在这个过程中,会输入相关的关键字,然后就期望能够找到与之相关的信息。
2,数据库中搜索如何进行?
使用数据库进行搜索总结来说:不够靠谱,性能差。具体体现:
1,每条记录对指定文本描述可能会很长,比如对某个商品的描述信息可能就很长,在进行数据库的搜索时,需要多每条记录的所有文本进行扫描,去搜索是否包含指定的某个关键字(比如“棒棒糖”)。
2,不能讲词拆分开了,也就是没有分词的功能。所以搜索结果不够“智能”,不如搜索“生化机”,“生化危机”就不会出现在结果中。
3,什么是全文检索、倒排索引和Lucene?
3.1 全文检索
在百度中得到的词条如下:其实就是对文章分词,使用倒排索引,对关键词进行检索的过程。
3.2 倒排索引
上图左边的列表,就是倒排列表,这个过程就是全文检索。
3.3 Lucene
简单来说,就是jar包,里面包含封装好的各种建立的倒排索引,以及进行搜索的代码,各种排序算法等等。在进行Java开发时,引入Lucene的jar包,然后基于Lucene的API进行去开发。
4,什么是Elasticsearch?
这里图就用石杉老师的先来表示,等后续更新自己理解和画的。
参考资料:1,百度百科对搜索、全文检索、倒排索引、Lucene的定义,解释。
2,Elasticsearch顶尖高手入门第二课讲义。