当前位置:网站首页>如何实现搜索引擎中的拼写纠错功能——思路
如何实现搜索引擎中的拼写纠错功能——思路
2022-06-29 23:51:00 【赵寒】
当用户在搜索框内,输入一个拼写错误的单词时,我们就拿这个单词跟词库中的单词一一进行比较,计算编辑距离,将编辑距离最小的单词,作为纠正之后的单词,提示给用户。
这就是拼写纠错最基本的原理。不过,真正用于商用的搜索引擎,拼写纠错功能显然不会就这么简单。一方面,单纯利用编辑距离来纠错,效果并不一定好;另一方面,词库中的数据量可能很大,搜索引擎每天要支持海量的搜索,所以对纠错的性能要求很高。
针对纠错效果不好的问题,我们有很多种优化思路,在这里介绍几种。
我们并不仅仅取出编辑距离最小的那个单词,而是取出编辑距离最小的 TOP 10,然后根据其他参数,决策选择哪个单词作为拼写纠错单词。比如使用搜索热门程度来决定哪个单词作为拼写纠错单词。
我们还可以用多种编辑距离计算方法,比如今天讲到的两种,然后分别编辑距离最小的 TOP 10,然后求交集,用交集的结果,再继续优化处理。
我们还可以通过统计用户的搜索日志,得到最常被拼错的单词列表,以及对应的拼写正确的单词。搜索引擎在拼写纠错的时候,首先在这个最常被拼错单词列表中查找。如果一旦找到,直接返回对应的正确的单词。这样纠错的效果非常好。
我们还有更加高级一点的做法,引入个性化因素。针对每个用户,维护这个用户特有的搜索喜好,也就是常用的搜索关键词。当用户输入错误的单词的时候,我们首先在这个用户常用的搜索关键词中,计算编辑距离,查找编辑距离最小的单词。
针对纠错性能方面,我们也有相应的优化方式。这里讲两种分治的优化思路。
如果纠错功能的 TPS 不高,我们可以部署多台机器,每台机器运行一个独立的纠错功能。当有一个纠错请求的时候,我们通过负载均衡,分配到其中一台机器,来计算编辑距离,得到纠错单词。
如果纠错系统的响应时间太长,也就是,每个纠错请求处理时间过长,我们可以将纠错的词库,分割到很多台机器。当有一个纠错请求的时候,我们就将这个拼写错误的单词,同时发送到这多台机器,让多台机器并行处理,分别得到编辑距离最小的单词,然后再比对合并,最终决定出一个最优的纠错单词。
真正的搜索引擎的拼写纠错优化,肯定不止我以上说的这么简单,但是万变不离其宗。掌握了核心原理,就是掌握了解决问题的方法,剩下就靠你自己的灵活运用和实战操练了。
边栏推荐
- History of deep learning
- Gradle连载7-配置签名
- Golang泛型的巧妙应用,防止变量空指针错误,防止结构体字段空指针错误
- Cacti maximum monitoring number test
- Yunhe enmo Guoqiang, identifiez - le, saisissez - le, avant l'ébullition de la base de données nationale
- Start harvesting! Nailing: adjust the maximum number of free users of "nailing team". If the number exceeds 10, it will not work normally
- Halcon practical: design idea of solder joint detection
- 漫画安全HIDS、EDR、NDR、XDR
- Official website of Greentree
- 西门子低代码平台通过Database Connector 连接Mysql 实现增删改查
猜你喜欢

MySQL multi table query
500 error occurred after importing skins folder into solo blog skin

Construction of module 5 of actual combat Battalion
![[译]在软件开发行业工作 6 年后,那些年我曾改过的观念](/img/69/c9829b14223f1e8fd3137d0750d8f7.png)
[译]在软件开发行业工作 6 年后,那些年我曾改过的观念

Applet plug-in access, development and precautions

333333333333333333333333333333

【微信小程序】认识小程序项目的基本组成结构

6.29 problem solving

云服务器的安全设置常识

@Scheduled注解的坑,我替你踩了
随机推荐
solo 博客皮肤导入 skins 文件夹后出现 500 错误
Teach you step by step to install webwind notes on edge browser
Inspiration collection · evaluation of creative writing software: flomo, obsidian memo, napkin, flowus
Matplotlib plt Hist() parameter explanation
[译]在软件开发行业工作 6 年后,那些年我曾改过的观念
Zhongkang holdings opens the offering: it plans to raise HK $395million net, and it is expected to be listed on July 12
Buffer flow exercise
Start harvesting! Nailing: adjust the maximum number of free users of "nailing team". If the number exceeds 10, it will not work normally
西门子低代码平台通过Database Connector 连接Mysql 实现增删改查
Set up security groups, record domain names, and apply for SSL certificates
二叉树的序列化 力扣 297. 二叉树的序列化与反序列化 652. 寻找重复的子树
Fund valuation, expenses and accounting
6.29 problem solving
Test d'installation du cluster metaq
[leetcode] a number that appears only once [136]
FPGA开发(2)——IIC通信
架构实战营模块5作业
Leetcode (76) -- Minimum Covering substring
Sword finger offer 15 Number of 1 in binary
Leetcode(633)——平方数之和