实用算法讨论(1):站内搜索和搜索引擎

王志勇 发表于 2022年05月31日 07:54

本栏目标题,本来是想命名为算法讨论、编程讨论。前面加一个“实用”,是因为这个栏目涉及的内容,是开发中的底层刚需,无法避开这个问题,是十分贴近实际需要的。

前几天的回复里,有网友说为什么本博客没有站内搜索功能?于是我回复使用百度的“关键词 site:abc.com”的方法,同时我也联想到了搜索引擎的开发,大家在开发当中,还必须涉及到一些搜索引擎的功能,尤其是站内的搜索功能。其实,除了Google、百度、淘宝、闲鱼、Youku、拼多多等这些具有搜索功能的,还比如Discuz的标题搜索,这些都是搜索引擎。做这个功能不难,问题是当数据庞大时,比如几G的数据库,如何在1秒内完成搜索

这个算法,至今我还是没有想到怎样实现。知道这个算法的人,只有那些搜索引擎,比如Google、百度、Yahoo、so.com、bing.com等等。

或许他们是使用“分词”的方式,也就是某一个关键词,特别是一些热门关键词,实际上已经提前产生了搜索结果,用户恰好搜索的是这个关键词,那么搜索到的是这个小数据库的区域,实际的数据库,可能只有几K~几百K,所以能在1秒内完成搜索。

我开发搜索功能时,就是使用这种算法,不但搜索极快,而且占用CPU也极小,无限接近静态HTML页的资源占用率。

但是,这些搜索引擎平台,又好像不是完全提前用“分词”的方式,因为一篇新博客,几乎用任何关键词,都能搜索到,好像他们用的是全文,也就是全数据库搜索的方式。(这些搜索引擎平台,也可能同时用了多种算法。)

全文搜索,那可就非常占资源了。比如淘宝平台,光是标题的数据库,恐怕也能达到几十G以上,全数据库搜索就是每次都要把这个几十G的数据库,从头到尾读取一遍。

由于全数据库搜索占用的服务器资源是惊人的,所以使用这个方法的搜索功能是很难实现的,这就是为什么新浪博客没有搜索博客正文的功能,太吃资源了!

4条评论:
1   angel2018 2022-05-31 09:31
装zblog的博客上搜索全站好快,和本地没异。哈哈
:-)
数据是装在mysql中的,应该是mysql中搜一遍。

自由勇 2022-05-31 10:27
是的,单博客的数据量小,影响还不大。

2   阿锋 2022-05-31 22:00
搜索引擎确实值得深究,小小博客很少用到搜索,技术类的博客搜索量可能会多点
3   老张博客 2022-06-01 08:08
像我那样小站,数据库才几M的那种,不管怎么样搜,都没有问题。。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写