2024年大数据最新【elasticsearch实战】从零开始设计全站搜索引擎(2),2024年最新硬核

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

热门搜索词

热门搜索词主要来源用户搜索,目前场景比较简单,每天定时任务统计N天前的用户搜词词频,按搜索频次降序排序,存储到MySQL或者redis中。
但这种方法可能存在问题,热搜词没有时间权重衰减, 例如:一个关键词10天前搜索了101次,昨天搜索了100次,10天前的词还能继续排在昨天的热词前面吗? 因此需要设计一个热词衰减权重,搜索时间越长热度权重应该相应的衰减。

联想搜索词

联想搜索需要在用户输入关键词时,联想用户可能想要搜索的词,该功能需要解决2个问题:

  1. 关联词来源
  2. 关联词方式

关联词来源可以通过用户搜索关键词记录来提取。

技术选型

技术选择可以根据业务和当前的系统环境来判断:

  1. 尽量不重复造轮子;
  2. 使用已有、成熟的、开源的技术栈;
  3. 能满足需求,成本低、技术可控。
    搜索存储引擎目前最成熟活跃的方案非 elasticsearch莫属,我们的系统基于腾讯云TSF微服务框架搭建,业务数据存在在腾讯云的MySQL中,因此搜索业务全文检索计划使用腾讯云最新版本的Elasticsearch 8.12

es配置选择

在腾讯云es选择配置时,除了考虑文档数据量之外,还需要考虑使用的插件对配置的影响,例如腾讯云自研的QQ分词器,就比较占资源,这里提示最少要选择2核8G以上的配置,但我们在8.12版本选的这个配置时,也经常由于堆外内存过大导致了es出现OOM,最后不得不升级到8核16G,这里大家需要谨慎选择。
在这里插入图片描述

文档转换工具选择

我们的需求里面需要将不同类型的文档转换为纯文本,这里有几个开源的实现方案:

工具 优点 缺点
1. OpenOffice 1. 一个开源的,功能强大的办公软件套装。2. 支持多种格式的文档转换。3. 支持多语言。4. 可以运行在多种操作系统上。 1. 界面比较陈旧。2. 某些高级功能不如付费的办公软件强大。3. 需要较大的系统资源运行。
2. Tika 1. Apache Tika是一个开源的文档类型和元数据提取工具。2. 支持大量的文档格式。3. 可以提取文档中的元数据和文本内容。 1. 对于一些复杂的文档格式,提取的结果可能不准确。2. 需要Java环境运行。
3. Ingest Attachment 1. Elasticsearch的一个插件,可以用来提取各种文件的内容。2. 使用Apache Tika进行文档解析。3. 可以直接与Elasticsearch集成,方便进行全文搜索。 1. 需要Elasticsearch环境。2. 对于一些复杂的文档格式,提取的结果可能不准确。
4. FsCrawler 1. FsCrawler是一个简单的文件系统爬虫,可以用来索引文件和文件夹。2. 支持OCR和全文搜索。3. 可以直接与Elasticsearch集成。 1. 需要Java环境运行。2. 只能处理文件系统中的文件,不能处理网络上的文件。

我结合自身业务的情况,选了上面4种之外的方法,我们文档存储在腾讯云COS,直接调用`腾讯云API转html 或者text文档:文档转 HTML

如果没有使用腾讯云我这边推荐使用`FsCrawler, 可参考我之前的博文。

数据传输选型

我们的数据存储在MySQL,文档数据存储在对象存储腾讯云COS中,需要近实时的将文档数据的变更同步到es数据库中,有以下一些同步方案。

同步方案选型
  1. 应用同步双写
    在这里插入图片描述
  2. 应用异步双写
    在这里插入图片描述
  3. 基于MySQL的抽取
    在这里插入图片描述
  4. 基于Binlog实时同步
    在这里插入图片描述
    四种方案原理和对比如下:
方案 原理 优点 缺点
1. 应用同步双写 当应用程序对MySQL进行写操作时,同时对Elasticsearch进行写操作。 1. 实时性较高。2. 数据同步过程相对简
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值