为什么需要搜索引擎 搜索引擎能给我们带来什么效果

网站SEO优化 Kongli 4个月前 (03-15) 88次浏览 0个评论

为什么需要搜索引擎?

因为互联网上的信息数以万亿,并且每天都在以亿级单位增加,你想准确的找到自己所要的信息比较困难,所以搜索引擎就出现了。方便快速找到自己所要找的信息。

 

搜索引擎技术是什么?

搜索引擎是一套可对大量结构化、半结构化数据、非结构化文本类数据进行实时搜索的专门软件。

最早应用于信息检索领域,经谷歌、百度等公司推出网页搜索而为大众广知。后又被各大电商网站采用来做网站的商品搜索。现广泛应用于各行业、互联网应用。是大型系统、网站架构师必备技能。

 

它能帮我们解决什么问题?

它是专门解决大量结构化、半结构化数据、非结构化文本类数据的实时检索问题。

而这种实时搜索数据库做不了。

 

数据有几个类型:

1.结构化数据:用表和字段表示的数据

2.半结构化数据:xml,html

3.非结构化数据:文本,文档,音频,视频等

传统的数据库对结构化数据处理的能力非常好,甚至在数据量很大时也能够通过建索引,集群,分库分表等手段来保持较好的数据处理能力,但碰到需要像like “%abc%”等索引失效的情况,或者对半结构化数据和非结构化数据的处理(如找到一篇标题和内容都有苍老师的博客,并且标题含有苍老师的博客排在前面的问题),数据库就无法提供高效的数据处理了。搜索引擎就为解决此类问题而诞生。

 

搜索引擎是如何解决问题的?

以“找到一篇标题和内容都有苍老师和姚明吃火锅的博客,并且标题含有苍老师和姚明吃火锅的博客排在前面”为例。

思路:对所有的博客标题进行检索,找到所有标题中含有苍老师和姚明吃火锅的博客,再找到博客内容含有苍老师的博客,并给标题和内容不同的权重,使得标题含有苍老师和姚明吃火锅的博客排在前面。

通过前面的分析使用传统的索引是不可以的。

此时我们使用反向索引:

传统索引是把索引建在列上,反向索引是把索引建在列内容上。

如:苍老师:{1,2,{2,9}}苍老师出现在博客id为1上,并且出现了2次,分别在位置2和9上。

姚明:{2,2,{2,9}}苍老师出现在博客id为2上,并且出现了2次,分别在位置2和9上。

此时,我们就可以通过诸如此类的索引迅速的找到相关博客,并通过相关算法进行相关性的排列。这就完美的解决了问题。

此思想的关键在于你为什么知道以苍老师为键建立反向索引呢,为什么不是在“苍和老师”、”苍老和师“、”苍老师与“分别建索引呢?

 

我们会自然的这么分词是因为我们是中国人,知道中国人的语境,如果这句话是日语,泰文等,你会不会这样分呢,机器是不知道相应的语境的,此时就要开发不同语言的分词器,这个分词器至少得有2个能力:

1.能够按照不同语言的语境进行分词

2.对新词能够进行扩展。

 

总结一下思路:

1、从数据源加载数据,分词、建立反向索引

2、搜索时,对搜索输入进行分词,查找反向索引

3、计算相关性,排序,输出

 

搜索引擎的原理和核心是什么?

1、分词器

2、反向索引,索引存储

3、相关性计算模型

 

搜索引擎的常用框架有哪些?

Lucene:Apache顶级开源项目,Lucene-core是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的框架,提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

Nutch:Apache顶级开源项目,包含网络爬虫和搜索引擎(基于lucene)的系统(同百度、google)。Hadoop因它而生。

Solr:Lucene下的子项目,基于Lucene构建的独立的企业级开源搜索平台,一个服务。它提供了基于xml/JSON/http的api供外界访问,还有web管理界面。

Elasticsearch:基于Lucene的企业级分布式搜索平台,它对外提供restful-web接口,让程序员可以轻松、方便使用搜索平台,而不需要了解Lucene。


行者信息 , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:为什么需要搜索引擎 搜索引擎能给我们带来什么效果
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址