搜索提示是如何实现的

2023-11-06

经典的想法就是一个Trie的 keysWithPrefix 问题。

更高级的,进一步考察,keysWithPrefix需要做prefix下的inOrder遍历,但是每当用户type下一个字符,那个提示列表瞬间就显示出来了,不像是遍历很大一棵树,除非保证这棵trie不是很大,比如只是到了一定popular程度的词才才放进来,这是一个办法。


还有一个思路,就是倒排索引的思想,用户输入的所有搜索词(一般就是一个短语)也可以看作是一个doc集合,可以为这个doc集合建立倒排,只是一般的倒排是WordId -> DocId也就是doc包含的word指向doc的索引,对于搜索词doc,它包含的word的意义可以扩展,除了一般意义的包含的词,再加上所有的前缀,后缀。比如 搜索词 crack the code interview,所有的前缀指向它,所有的后缀指向它(键入code interview, interview也可以列出它),甚至只键入code也可以列出它,这个就是看你给这个短语添加怎样的link 了。

之前方法的trie是不用数据的,类似一个set。倒排的思路trie是一个symbol table,是有数据的,数据就是这个key可以指向的phrase列表。

索引就是一个symbol table,更本质的,索引就是一个link,就是一个为记录添加什么样的link的问题,从不同字段(dimension)的角度,确定了dimension又可以有不同match的方式,full match, prefix match,还是any word match.




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搜索提示是如何实现的 的相关文章

  • sql语句练习50题(Mysql版)

    表名和字段 1 学生表 Student s id s name s birth s sex 学生编号 学生姓名 出生年月 学生性别 2 课程表 Course c id c name t id 课程编号 课程名称 教师编号 3 教师表 Tea

随机推荐

  • 使用Python制作疫情数据分析可视化图表(三)

    python小白 在 一心学 公众号学习了一点疫情数据分析可视化的课程 记录下来 供小白参考 目录 一 基本数据的查看和初步处理 二 时间序列与区域划分 三 快速查看不同省市疫情现状 四 累计确诊病例走势 五 不同省市确诊新增情况 六 全国
  • 如何启动docker服务

    Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的 Linux或Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之间不会有任何接
  • imagenet val 按类别分类

    前言 有时候想看imagenet下某个类别的效果 但它又没划分 之前看了这篇文章将ImageNet的验证集val数据分类到不同文件夹中 但不是很清楚那代码 本文基于它的代码去做更改 把这个下下来 https raw githubuserco
  • React Native_手把手教你做项目(二.视频列表页布局&Mock虚拟数据)

    我们继续在上一篇文章的基础上编写我们的应用程序 视频列表页List 我们先写垃圾代码 把整个的架子搭起来 然后如果有其他页面通用的组件的话 我们再进行封装处理 ListView布局 list js文件 import React Compon
  • 内部类、枚举、Object类

    内部类 定义在一个类的内部的类 作用 1 内部类和外部类可以互相访问其成员 2 通过内部类 可以实现多继承 3 缺点 结构复杂 代码可读性不强 分类 成员内部类 1 不能有static属性和方法 原理同局部变量不能用static修饰 但是s
  • NumPy库学习笔记(未完)

    NumPy库 这篇文章主要内容来源于Python Numpy 教程 NumPy 中文和python常用库 NumPy 和 sklearn入门 ML小菜鸟 博客园 cnblogs com 1 1 导入NumPy库 import numpy a
  • VS Code常用插件安装及使用

    C C 开发常用插件安装 C C 在C C 开发中 这个肯定是必须的 C C Snippets C C 重用代码块 C C Advanced Lint C C 静态检测 Code Runner 代码运行 Include AutoComple
  • 小程序如何获取当前的天气预报

    大家好 我是陈楠酒肆 今天我为大家分享的是小程序获取当前的天气预报 我们先看看效果图 在实现这个效果之前我们需要引用一个JS文件 就是amap wx js 这个文件可以在我的交流群里下载 由于这里我使用了高德地图密钥 因此 大家还需要在高德
  • 论文研读 —— 10. PCA-Kalman: device-free indoor human behavior detection with commodity Wi-Fi (2/3)

    文章目录 3 2 Online behavior testing phase 4 Experimental setup 4 1 Hardware testbed 4 2 Experimental scenarios 3 2 Online b
  • 设计之星 ai_“AI创新之星”评选活动征集工作已启动,6月15日止,速来!

    为了推动人工智能与实体经济发展的深度融合 充分展示国内企业和创业团队在人工智能领域的创新成果 中国人工智能 多媒体信息识别技术竞赛 组委会在竞赛期间组织开展 AI创新之星 评选活动项目征集工作 评 选 范 围 评选主要围绕 深化融合应用 培
  • randomforestregressor参数详解

    randomforestregressor参数详解 sklearn ensemble RandomForestRegressor n estimators 10 数值型参数 默认值为100 此参数指定了弱分类器的个数 设置的值越大 精确度越
  • 【JAVA基础】核心机制

    b站大学课程笔记 下面是课程链接 https www bilibili com video BV1364y1k7WG p 11 spm id from pageDriver vd source b53165477127ff81132dc79
  • 编译gnome-sharp-2.20.1出错

    To solve the problem gtk2 development library must be installed Under CentOS this can be done with yum groupinstall Deve
  • 密码正则

    正则一 密码正则 密码需包含字母 符号或者数字中至少两项且长度超过6位数 最多不超过16位数 const regPwd str gt let zmReg A Za z 大小写字母 let numReg 0 9 数字 let zfReg A
  • QTcp-心跳

    心跳机制 大致实现两中 心跳发起的主动方为谁 server或client 其基本思路 是在一定时间间隔内模拟server和client的通信 所以 这就比一般通信多了时间属性 而非随意进行交互 这里 我们将client作为主动方 其过程如下
  • 通过递归方法更改对象中的属性值

    需求 递归一个对象 我们更改其type全部为5 我们首先思考如果用每一层的循环我们怎么取解决 var data label 一级 1 type 1 children label 二级 1 1 type 1 children type 1
  • 有人提议扣程序员80%的税分给穷人,多人点赞。

    大家好 我是北妈 0 现在经济不好 很多人内心很慌 然后就有人开始打歪主意了 比如今天我看到了这个 这个说法甚至得到了很多人的支持和点赞 为什么会有很多人支持这种想法呢 毕竟在大家眼睛里 程序员是高薪 有钱的代名词 在大多数人工资收入都很低
  • SPI协议介绍

    在调试LCD驱动时用到了SPI接口 因此将了解 理解到的SPI知识记录下来 SPI接口有三线和四线两种类型 这里只介绍常用的四线类型 what 简单介绍 术语表 基本概念 why 优点特点 how 过程 what 简单介绍 术语表 name
  • 安装Ubuntu遇到unable to find a medium containing a live file system解决方案

    安装unable to find a medium containing a live file system 搜了好几个帖子 说是重新烧录u盘 换usb2 0 都不好使 最后找到了 在启动页面点击e 可以进入启动写参数界面 将quiet
  • 搜索提示是如何实现的

    经典的想法就是一个Trie的 keysWithPrefix 问题 更高级的 进一步考察 keysWithPrefix需要做prefix下的inOrder遍历 但是每当用户type下一个字符 那个提示列表瞬间就显示出来了 不像是遍历很大一棵树