搜索引擎核心理论

 

学习目标:

  1. 明白为什么需要搜索引擎。
  2. 明白搜索引擎技术是什么、用来解决什么问题(场景)的。明白什么时候该用它。
  3. 明白搜索引擎是怎么解决问题的,熟悉搜索引擎的核心概念、工作流程、原理。
  4. 了解市面上常用的搜索引擎框架

 


 

在数据库中如何判断一个列是否可以建索引?

基本原则:

  • 表经常被访问,且数据量很大,而每次查询的数据只占很小很小一部分
  • 列的数据值分布范围广泛
  • 列中包含大量空值
  • 列被经常用在查询条件中(不能是包含在表达式中)

文本列需特殊考虑:经常是用作模糊查询,则不适合建索引。精确查询则可。

 


 

 

为什么需要搜索引擎?

数据的种类:

  • 结构化数据: 用表、字段表示的数据
  • 半结构化数据: xml html
  • 非结构化数据: 文本、文档、图片、音频、视频等

结论:数据库适合结构化数据的精确查询,而不适合半结构化、非结构化数据的模糊查询及灵活搜索(特别是数据量大时),无法提供想要的实时性。

 


什么是反向索引?引用:https://www.cnblogs.com/yxmfighting/p/7965898.html

为什么称为倒排索引?

英文原名Inverted index,失败地被翻译成了倒排索引。

而应该翻译为:反向索引

java开源中文分词器有哪些?引用:https://www.cnblogs.com/lishanyang/p/6017155.html

复杂的相关性计算模型有:

  • tf-idf 词频-逆文档率模型
  • 向量空间模型
  • 贝叶斯概率模型,如: BM25

搜索引擎中会提供一种、或多种实现供选择使用,也会提供扩展。
电商网站中的搜索相关性计算会考虑更多,更复杂。


 

总结

1、搜索引擎是什么?

  • 一套可对大量结构化、半结构化数据、非结构化文本类数据进行实时搜索的专门软件
  • 最早应用于信息检索领域,经谷歌、百度等公司推出网页搜索而为大众广知。后又被各大电商网站采用来做网站的商品搜索。现广泛应用于各行业、互联网应用。是大型系统、网站架构师必备技能。

2、搜索引擎是用来解决什么问题的?

  • 专门解决大量结构化、半结构化数据、非结构化文本类数据的实时检索问题。
  • 这种实时搜索数据库做不了。

3、搜索引擎适合什么场景使用?
大量结构化、半结构化、非结构化文本类数据的实时搜索

  • 信息检索(如电子图书馆、电子档案馆)
  • 网页搜索
  • 内容提供网站的内容搜索(如 新闻、论坛、博客网站)
  • 电子商务网站的商品搜索
  • 如果你负责的系统数据量大,通过数据库检索慢,可以考虑用搜索引擎来专门负责检索。

4、搜索引擎由哪些核心部件构成?

  • 数据源
  • 分词器
  • 反向索引(倒排索引)
  • 相关性计算模型

5、搜索引擎的工作原理是怎样的?

  • 从数据源加载数据,分词、建立反向索引
  • 搜索时,对搜索输入进行分词,查找反向索引
  • 计算相关性,排序,输出

6、要实现一个搜索引擎,需要实现哪些?

  • 分词器
  • 反向索引,索引存储
  • 相关性计算模型

7、要去使用一个搜索引擎,需要搞清楚它的哪些方面?

  • 分词器
  • 反向索引建立、存储、更新
  • 相关性计算模型

8、java领域应用广泛的开源搜索引擎组件、系统

 

  • Lucene:Apache顶级开源项目,Lucene-core是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的框架,提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
  • Nutch:Apache顶级开源项目,包含网络爬虫和搜索引擎(基于lucene)的系统(同百度、google)。Hadoop因它而生。
  • Solr:Lucene下的子项目,基于Lucene构建的独立的企业级开源搜索平台,一个服务。它提供了基于xml/JSON/http的api供外界访问,还有web管理界面。
  • Elasticsearch:基于Lucene的企业级分布式搜索平台,它对外提供restful-web接口,让程序员可以轻松、方便使用搜索平台,而不需要了解Lucene。

 

posted @ 2018-05-16 09:54  Horner  阅读(286)  评论(0)    收藏  举报