请问搜索引擎查询是怎么实现的,用数据库查询可以吗
比方说百度搜索,是数据库查询实现的还是其他方法,我以前理解的就是其他网站的关键词储存在百度的数据库中,我们查询时百度调用select 语句实现查询
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比方说百度搜索,是数据库查询实现的还是其他方法,我以前理解的就是其他网站的关键词储存在百度的数据库中,我们查询时百度调用select 语句实现查询
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(13)
你搜索的时候用select那岂不是慢死
简单的,数据量不多的可以用like来模糊查询
但是数据量大了必须要用搜索引擎
coreseek+sphinx
article_fc字段所在的表也可以和标题正文所在的文章表分开,文章ID作为article_fc字段所在的表的外键,查出后连接文章表读出标题正文即可.
简易中文分词SCWS提供有PECL扩展以及中文词典,PHP使用起来很方便,
可以搭配MySQL的FullText索引(MyISAM/InnoDB)实现简单的全文搜索功能.
http://www.xunsearch.com/scws/docs.php#instscws
表引擎建议使用MySQL5.6.4后的InnoDB.
比如要实现对网站的所有文章进行全文搜索:
插入文章时,对标题和正文这两个字段进行SCWS中文分词并用
空格分隔后存入一个用于全文搜索的字段比如article_fc,该字段要求建立FullText全文索引.
用户搜索时,先使用SCWS对输入进行分词比如获得关键词word1和word2,然后用
SELECT * FROM articles WHERE MATCH(article_fc) AGAINST('word1 word2');
对索引字段article_fc进行全文搜索,把获取的结果中的标题和正文返回即可.
如果要实现专业的全文搜索引擎,推荐使用基于Xapian引擎和SCWS分词的XunSearch
.
XunSearch同样提供了PHP语言的开发接口,使用起来也很方便:
http://www.xunsearch.com/doc/php/guide/search.query
早期的和部分专业型数据库底层可能会采用sql数据库,但是现在的大型数据库数据量和吞吐率那么高,又要求延迟小,使用sql这种数据库根本做不到。而且考虑到近义词、输入纠错、语义联想等等,sql完全做不到。搜索引擎底层数据的基本算法是倒排索引,你可以百科一下。如果只是想了解搜索引擎的一点皮毛,也可以一下,想深入了解的话找本书看吧,比如信息检索导论什么的
例如用Solr,定期把数据库里的数据提取出来,转化成Solr的格式交给Solr,Solr对其做索引。所搜的时候直接在Solr的索引上搜索,速度比数据库搜索快很多,尤其是模糊匹配,数据库的 like 很慢,但是Solr的非常快。
感觉不会是数据库,应该是有自己的数据组织结构。
在这个基础上再做各种拓展
这样简单的话岂不是任意谁都可以做个简单的搜索引擎?
回复
只不过你说的关键词是建立的反向索引,然后不是用得你说的select的sql数据库
你的理解很到位,不错,继续
哦,多谢
搜索引擎基础肯定也是数据库查询,不过性质不太一样,具体建议你看看Lucene,现在很多自带站内搜索引擎的网站用的都是这种技术