数据库-数据模糊查询
类似于百度的模糊查询是如何实现的?网页内容在后端是以什么形式进行存储?数据库?难道是用数据库查询的like语句?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
类似于百度的模糊查询是如何实现的?网页内容在后端是以什么形式进行存储?数据库?难道是用数据库查询的like语句?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
首先可以确定肯定不是你说的like操作,那肯定会挂掉。这个肯定有词库的支持,拥有一个中文词库,分词易如反掌,一点也不复杂。关键是这个词库的数据结构,不知道百度是怎么架构和组织的,一般的是按照散列表的方式组织的,并且按照词语联想的方式组织。只要拥有这样一个词库,将一段文字分词就非常简单了。
首先,我感觉百度的后端绝不是数据库,如果是数据库,用like去做模糊匹配,就彻底废了。
感觉实现的思路是这样的:
1.网络爬虫去爬各种网站信息;
2.将网站信息进行日志文件存储,可是使用类似hadoop去实现;
3.建立文件搜索索引
你每一次的搜索查询其实都是对文件服务器的索引操作,这也就能解释为什么百度的查询库为什么都是更新时间的问题,并不是实时抓取数据。个人感觉应该是这样实现的,有知道详情的也可以扔个砖头
like的话效率太低,肯定不行。
前段时间正好看了下《web智能算法》。百度应该也是使用了爬虫先采集信息,然后再使用lucene等技术建立了相关的索引,存储信息,最终用户搜索的是已经处理过的索引文件。
like操作就不太可能了。假如单是like可以搞定的话,那Lucene这种搜索框架就没有存在的必要了。
这里涉及到的有两个点:
1.怎么查:首先他有个分词的过程,然后根据分完后的字段搜索索引库,我觉得这里他所做的搜索也不是盲目的搜索。还有一个,就是词义扩展,如把search 扩展为 searching等。
2.要查的东西是如何存储的:索引库。百度会定期爬取网络上的网页,然后处理,建立自己的索引库,估计不会用市场上的数据库产品。
你要弄搜索的话,建议你可以学习下一下开源的搜索框架,如Lucene;有助于理解。
可以使用apache solr或者nutch这种已有的开源搜索引擎