搜索提示原理浅谈

前言

搜索提示要实现哪些功能?

a: 支持前缀匹配,如输入”海底“,提示”海底捞“

b:同时支持汉字,拼音输入 @hxx 有java组件可实现

c:支持多音字,如 ”chongqing“ 和 ”zhongqing“ 都应该提示”重庆“ @hxx 注意,多音字涉及到组合全排列

d:支持拼音缩写, 如“cq”,提示“重庆” @hxx 在b的时候抽取

e: 基于用户的历史搜索行为,按照关键字热度进行排序 为了提供suggest关键字的准确度,进行排序。

 

正文

 

1:mt的实现: trie树

a-c的实现: 将汉字全部转换成拼音(有pinyin4j依赖),可依靠trie树结构实现

d的实现:需要两个trie树

@hxx 这种方案的缺陷是查询和索引都需要进行多次的拼音转换

e: 记录用户查询记录和搜索历史查询记录(map<query,count>),根据 当前输入的query得到所有候选的词,进行top k

 

2: trie树

@hxx 为什么trie树是可行的?用户不会输入过长的关键字,当然我们的索引词也不会很大,响应速度为o(len),其中len为检索字符长度

例如,给出一组单词inn, int, at, age, adv, ant, 我们可以得到下面的Trie

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangleijay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值