如何在大型系统中提供拼音检索服务

最近有这么一个需求,客户要求在选择一些业务数据时,能提供类似谷歌的拼音检索功能,由于目前系统中的业务数据都是存储在数据,而且
数据量都比较大,目前主要考虑两种实现方式:
  第一种通过构建一个包含有所有业务数据的关键字的拼音库,用户输入拼音时,先在拼音库中
        进行检索,再在对应的数据库中查找记录。
  第二种方式直接在数据库中对需要查找的内容先进行拼音的转换。
  第三种方式对在客户端展示的数据进行全量加载,目前由于数据量比较大,是提供异步加载的方式。
这三种方式都存在一些问题,第一种构建一个拼音库,需要在目前系统中初始化构建一个庞大的拼音库,并且在系统各个输入业务数据的入口,
都要进行处理,对于庞大的系统而已,工作量很大,带来的风险很高。第二种方式在数据库中对查询的内容进行拼音转换,由于目前ORACLE并
未提供内部函数支持中文和拼音的转换,所以需要提供自定义函数,在查询时对需要查询的字段内容进行转换,编写自定义函数经过测试,发现
在小数据量的时候,可以解决问题,一旦遇到稍大的一点的数据表,性能瓶颈就暴露出来了。第三种方式同样会对系统带来考验,试想下,几
万条数据同时加载到客户端,客户端需要承受很大的压力。特别是大并发的时候,很容易引起系统瘫痪。
  目前还在考虑其它的解决方案,同时看下能否对第二种方案进行一些改进,以达到最终的效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值