当前位置:网站首页>如何实现搜索引擎中的拼写纠错功能——思路
如何实现搜索引擎中的拼写纠错功能——思路
2022-06-29 23:51:00 【赵寒】
当用户在搜索框内,输入一个拼写错误的单词时,我们就拿这个单词跟词库中的单词一一进行比较,计算编辑距离,将编辑距离最小的单词,作为纠正之后的单词,提示给用户。
这就是拼写纠错最基本的原理。不过,真正用于商用的搜索引擎,拼写纠错功能显然不会就这么简单。一方面,单纯利用编辑距离来纠错,效果并不一定好;另一方面,词库中的数据量可能很大,搜索引擎每天要支持海量的搜索,所以对纠错的性能要求很高。
针对纠错效果不好的问题,我们有很多种优化思路,在这里介绍几种。
我们并不仅仅取出编辑距离最小的那个单词,而是取出编辑距离最小的 TOP 10,然后根据其他参数,决策选择哪个单词作为拼写纠错单词。比如使用搜索热门程度来决定哪个单词作为拼写纠错单词。
我们还可以用多种编辑距离计算方法,比如今天讲到的两种,然后分别编辑距离最小的 TOP 10,然后求交集,用交集的结果,再继续优化处理。
我们还可以通过统计用户的搜索日志,得到最常被拼错的单词列表,以及对应的拼写正确的单词。搜索引擎在拼写纠错的时候,首先在这个最常被拼错单词列表中查找。如果一旦找到,直接返回对应的正确的单词。这样纠错的效果非常好。
我们还有更加高级一点的做法,引入个性化因素。针对每个用户,维护这个用户特有的搜索喜好,也就是常用的搜索关键词。当用户输入错误的单词的时候,我们首先在这个用户常用的搜索关键词中,计算编辑距离,查找编辑距离最小的单词。
针对纠错性能方面,我们也有相应的优化方式。这里讲两种分治的优化思路。
如果纠错功能的 TPS 不高,我们可以部署多台机器,每台机器运行一个独立的纠错功能。当有一个纠错请求的时候,我们通过负载均衡,分配到其中一台机器,来计算编辑距离,得到纠错单词。
如果纠错系统的响应时间太长,也就是,每个纠错请求处理时间过长,我们可以将纠错的词库,分割到很多台机器。当有一个纠错请求的时候,我们就将这个拼写错误的单词,同时发送到这多台机器,让多台机器并行处理,分别得到编辑距离最小的单词,然后再比对合并,最终决定出一个最优的纠错单词。
真正的搜索引擎的拼写纠错优化,肯定不止我以上说的这么简单,但是万变不离其宗。掌握了核心原理,就是掌握了解决问题的方法,剩下就靠你自己的灵活运用和实战操练了。
边栏推荐
- 架构实战营模块5作业
- 打造一个 API 快速开发平台,牛逼!
- Start harvesting! Nailing: adjust the maximum number of free users of "nailing team". If the number exceeds 10, it will not work normally
- modelsim的TCL脚本的define incdir命令解析
- FPGA Development (2) -- IIC communication
- 我想知道今天还可以开户么?另外想问,现在在线开户安全么?
- RRDTOOL draws MRTG log data
- Solr basic operation 2
- 穿越过后,她说多元宇宙真的存在
- 數莓派 4怎麼樣?可能的玩法有哪些?
猜你喜欢

【一起上水硕系列】Day 8

漫画安全HIDS、EDR、NDR、XDR
solo 博客皮肤导入 skins 文件夹后出现 500 错误

Digital collection of cultural relics, opening a new way of cultural inheritance

Matplotlib plt Hist() parameter explanation

Inspiration collection · evaluation of creative writing software: flomo, obsidian memo, napkin, flowus

Why is JSX syntax so popular?

雲和恩墨蓋國强,識別它、抓住它,在國產數據庫沸騰以前

Jetpack之Room的使用,结合Flow

MySQL multi table query
随机推荐
Serialization of binary tree 297 Serialization and deserialization of binary tree 652 Find duplicate subtrees
333333333333333333333333333333
简单理解B树和B+树
Teach you step by step to install webwind notes on edge browser
On binary tree
Which securities company should I choose to open an account online? Also, is it safe to open an account online?
Cacti最大监控数测试
Leetcode(633)——平方数之和
MySQL functions and constraints
由GlideException: Failed DecodePath{DirectByteBuffer->GifDrawable->Drawable}引起的刨根问底
6.29 problem solving
Binary search tree 230 The element with the smallest K in the binary search tree 1038 From binary search tree to larger sum tree
MetaQ集群安裝測試
AI赋能新零售,「智」胜之道在于生态思维|数智夜话直播精选摘录
二叉树的序列化 力扣 297. 二叉树的序列化与反序列化 652. 寻找重复的子树
Yunhe enmo, gaiguoqiang, identify it and grasp it before the domestic database boils
FPGA Development (1) -- serial port communication
Machine learning: the concept and application of VC dimension
What is online account opening? In addition, is it safe to open a mobile account?
Bee common configuration