wklken / suggestion

搜索输入框-下拉提示(推荐), 提示词根据权重排序.基于double-array-trie的darts, golang语言实现.
https://github.com/wklken/suggestion
180 stars 51 forks source link

对拼音的支持 #1

Closed c9n closed 10 years ago

c9n commented 10 years ago

线上还没支持拼音么?

看到注释里写着:

加入拼音的话,导致内存占用翻倍增长,要考虑下如何优化节点,共用内存
wklken commented 10 years ago

支持的,只是拼音会导致节点数变多,我这边的处理方式是只将某些热门词做拼音处理

你可以测试一下 http://s.kuaiwan.com/

后续我会使用double-array-tire-tree实现,目前使用map做树处理,并不是严格意义上的tire

--  wklken Sent with Airmail

开启 2014年1月21日 at 下午5:00:42, Lynn (notifications@github.com) 写:

线上还没支持拼音么?

看到注释里写着:

加入拼音的话,导致内存占用翻倍增长,要考虑下如何优化节点,共用内存

— Reply to this email directly or view it on GitHub.

c9n commented 10 years ago

喔,这也是个解决办法。

正在读现在的代码,期待更新。

继续两个问题:

  1. 线上接口都是基于Python么?
  2. 跨语言调用有什么建议么?

p.s 今天网络抽风,不小心评论了多次,已删除。

wklken commented 10 years ago

纯python,方便扩展逻辑 源代码里有个golang版本的,性能瓶颈的话换成golang就行,基本无压力了 不过现有python版本,我这边qps 300+服务器毫无压力

找个框架(例如flask),实现http 的 get接口,不存在跨语言调用的问题

--  wklken Sent with Airmail

开启 2014年1月21日 at 下午5:41:58, Lynn (notifications@github.com) 写:

喔,这也是个解决办法。

正在读现在的代码,期待更新。

线上接口都是基于Python么?

跨语言调用有什么建议么?

— Reply to this email directly or view it on GitHub.

c9n commented 10 years ago

谢答疑。

先拿python的试试,目前还达不到 300 qps。

c9n commented 10 years ago

再次咨询一个问题:

如,QQ音乐 转换为拼音 => qqyy & qqyinyue,同时使用附加属性 display="QQ音乐" 作为结果显示。

此时 query 为 q 时,会返回 3 个 QQ音乐

screen shot 2014-01-23 at 8 55 56 pm

这个问题有什么好的解决思路么?

请不惜赐教。 :beers:

wklken commented 10 years ago

有遇到这个问题,我用的是https://github.com/wklken/pinyin.py,转提取拼音首字母,同时作为节点时出现这个问题

我的处理方式有些简单粗暴 每个节点多一个参数,唯一标识符,hash或者干脆整个key,取结果集的时候,取1.5倍,然后去重.....

c9n commented 10 years ago

嗯,我也有考虑用这种办法。

缺点是去重后有可能拿到的条数小于 limit