搜索引擎主题模型优化(1.为什么要使用搜索引擎?搜索引擎是如何解决问题的?)
优采云 发布时间: 2022-03-19 14:23搜索引擎主题模型优化(1.为什么要使用搜索引擎?搜索引擎是如何解决问题的?)
1.为什么要使用搜索引擎?
首先了解数据有几种类型:
1.结构化数据:表和字段表示的数据
2. 半结构化数据:xml、html
3.非结构化数据:文本、文档、音频、视频等。
传统数据库对结构化数据处理能力很强,即使在数据量很大的情况下,也可以通过建立索引、集群、分库分表等方式保持良好的数据处理能力。%abc%"等索引故障,或者半结构化数据和非结构化数据的处理(比如找一个有苍老师标题和内容的博客,并且标题收录问题前面有苍老师的博客),数据库无法提供高效的数据处理搜索引擎就是为解决此类问题而诞生的。
2.什么是搜索引擎技术?
一套专门用于实时搜索大量结构化、半结构化和非结构化文本数据的软件。
它最早应用于信息检索领域,随着谷歌、百度等公司引入网络搜索而广为人知。后来被各大电商公司网站采用来搜索产品网站。现在被广泛应用于各个行业和互联网应用。这是大型系统架构师和 网站 的必备技能。
3. 解决什么问题?
专为解决大量结构化、半结构化和非结构化文本数据的实时检索问题而设计。
这种实时搜索数据库做不到。
4. 什么时候使用?
实时搜索大量结构化、半结构化和非结构化类文本数据
信息检索(例如电子图书馆、电子档案)
网络搜索
内容提供网站 内容搜索(例如新闻、论坛、博客网站)
电子商务产品搜索网站
如果你负责的系统中数据量很大,通过数据库检索很慢,可以考虑使用搜索引擎专门负责检索。
5.搜索引擎如何解决问题?
以“找到一个标题和内容都有苍老师和姚明吃火锅的博客,标题为苍老师和姚明吃火锅的博客排名第一”为例。
思路:搜索所有博客标题,找到所有收录苍老师和姚明吃火锅的博客,然后找到内容收录苍老师的博客,并对标题和内容赋予不同的权重,使标题收录苍先生和姚明吃火锅的博主位居榜首。
通过前面的分析使用传统的索引是不可能的。
此时我们使用倒排索引:
传统索引是在列上建立索引,倒排索引是在列内容上建立索引。
例如: 苍老师:{1, 2, {2, 9}} 苍老师出现在id为1的博客上,出现了两次,分别出现在第2和第9位。
姚明:{2, 2, {2, 9}} 苍老师出现在id为2的博客上,出现了两次,分别出现在第2和第9位。
此时,我们可以通过这样的索引快速找到相关的博客,通过相关的算法对相关的博客进行排名。这完美地解决了问题。
这个想法的关键是你为什么知道如何以苍老师为关键建立倒排索引?为什么不分别为“苍老师”、“苍老师”、“苍老师”创建索引呢?
我们自然会这样分词,因为我们是中国人,知道中文语境。如果这句话是日文、泰文等,你会这样划分吗?机器不知道相应的上下文。这时候就需要为不同的语言开发分词器了。这个分词器必须至少有2个能力:1.可以根据不同语言的上下文进行分词2.可以扩展新词。
主流分词器:IKAnalyzer mmseg4j
总结一下思路:
1、从数据源加载数据,分词,构建反向索引
2、搜索时,对搜索输入进行分段,找到反向索引
3、计算相关、排序、输出
6.搜索引擎的原理和核心是什么?
1、分词器
2、反向索引,索引存储
3、相关性计算模型
7.搜索引擎常用的框架有哪些?
Lucene:Apache顶级开源项目,Lucene-core是一个开源的全文搜索引擎工具包,但它不是一个完整的全文搜索引擎,而是一个全文搜索引擎框架,提供了一个完整的查询引擎和索引引擎,部分文本分割引擎(英语和德语两种西方语言)。Lucene 的目的是为软件开发人员提供一个易于使用的工具包,以便在目标系统中轻松实现全文搜索功能,或者在此基础上构建一个完整的全文搜索引擎。
Nutch:Apache 顶级开源项目,包括网络爬虫和搜索引擎(基于lucene)系统(同百度、google)。Hadoop 就是由它诞生的。
Solr:Lucene下的一个子项目,一个基于Lucene的独立企业级开源搜索平台,一个服务。它提供基于 xml/JSON/http 的 API 供外部访问,以及 Web 管理界面。
Elasticsearch:基于Lucene的企业级分布式搜索平台,提供restful-web界面,让程序员在不了解Lucene的情况下也能轻松便捷地使用搜索平台。