词语搭配系统

 1 <?php
 2     /** 
 3     *设计一个系统处理词语搭配问题,比如说中国和人民可以搭配,
 4     *则中国人民人民中国都有效。要求:
 5     *系统每秒的查询数量可能上千次;
 6     *词语的数量级为10W;
 7     *每个词至多可以与1W 个词搭配
 8     *当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。
 9     **/
10 
11     /**
12     *解决思路
13     *假设10W的词语都是二字词语,UTF8存储,则每个词语占 2*3 bytes = 6 bytes
14     *现在先对10W个词语建一棵二叉查找树,树节点存储词语内容和一个指向词语匹配表的指针,忽略左右孩子指针和指向词语匹配表的指针大小
15     *10W个词语组成的树大小是 100,000 * 6 bytes = 600 Kbytes,即使加上各种指针也不大
16     *每个词语的匹配表对应1W个单词,这1W个单词使用数组存储,并排序,则每个数组大小为10,000 * 6bytes = 60 Kbytes
17     *10W个单词的匹配数组就是 100,000 * 60 Kbytes = 6 Gbytes,应该来说大多数服务器内存都够
18     *然后查找的时候先通过查找树找到关键词,然后去匹配数组用二分查找找到匹配词即可
19     **/
20 ?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值