分布式数据库与搜索引擎的搜索效率,区别在哪里
【分布式数据库与搜索引擎的搜索效率,区别在哪里】 数据库归根结底是做持久化的,在数据量少的情况下可以同时做到搜索服务的功能,当数据量大了之后往往需要一个专门做搜索的服务,搜索引擎处在这一层,底层数据还是关系数据库,HDFS,HBase直流,针对大数据场景下,搜索引擎只是建立索引,这点是和数据库最大的差别,设计到算法和数据结构的处理。
■网友
数据库的模糊搜索 和 搜索引擎的功能 不是一个概念。数据库的模糊搜索是不能走索引的,也不好实现搜索词的逻辑(与或非)和范围搜索(在特定的域中)。 能走的只有前缀索引,但是这大大限制了功能。不过使用数据库来实现搜索引擎也是一个思路,我有一个基于分布式数据库的全文索引的方案(代号x)相比solr或elasticsearch的区别如下:1 solr或elasticsearch是以文档进行均衡分片的,x是以单词(term)进行均衡分片的。2 solr或elasticsearch要到所有的shard上去搜索,最后在replica上合并结果;x只需要到单词(term)所在的节点上进行搜索(只有一个节点),而且数据库有索引,速度非常快。正是由于这个区别,搜索的速度得以提升,特别是在大数据量(机器多,分片多)的情况下,x方案有它独有的好处(精确定位term所在的节点),代价就是在索引阶段需要把单词和文档都定位到某个具体的节点上。
数据库的表结构设计,由于是分布式数据库,所以表示根据某个字段分布到不同的数据库节点上的:单词表 tab_term ,均衡字段是 term_id,字段意义:term_name 单词field_name 单词的域doc_id 单词所在的文档term_freq 单词的频率term_tfidf 单词的逆文档频率score 单词的得分,可以使用逆文档频率代替文档表 tab_doc , 均衡字段是doc_id, 字段意义:doc_id 文档id doc_type 文档类型doc_content 文档内容本身
索引过程:1 一个文档,经过分析(分词),得到每个单词的域 ,词频,词频-逆文档频率等信息按照 term_name 作为均衡字段,将数据分割到tab_term的各个节点上2 然后将文档进行hash,得到文档id,文档类型等,根据doc_id 将数据分散到tab_doc的各个节点上
搜索过程:用户输入的关键词进行分析(分词) ,根据分词到 tab_term 中检索,得到每个 term 的 doc_id 列表;然后对doc_id 进行排名,再去 tab_doc 返回原始文档
■网友
发现在同等条件下,模糊搜索和分布式数据库,没有多大差别当前数据10亿,系统设计容量80亿10亿数据,数据库模糊查找和搜索引擎响应时间没有多大差别,我想一定你打开搜索引擎的姿势不对。10亿数据,每条记录假设1K,数据量1T,假设你有100块磁盘,随机读速度最多几十M,一次全表扫描至少几分钟。正确使用搜索引擎,响应时间可以在1秒以内。谢邀。
■网友
个人理解:搜索引擎关注的是信息采集和关联的能力。数据库核心还是数据存储和事务能力。
■网友
老大,搜索引擎是为词一一文档建了倒排索引啊
推荐阅读
- 考研数据库方向
- 哪个数据库,可以直接做数据透视图(navicat类的也可以)
- 《亿万》第九集里,法官用的这个搜索引擎是啥
- 有啥搜索引擎可以替代Google(外语)
- 能否在网页搜索中加入点赞机制,从而个性化搜索引擎
- 原谅我辣么肤浅,搜索引擎和分类信息网真的能相提并论吗
- 怎样评价百狗搜索引擎www.baigle.com和人肉搜索功能renrou.baigle.com?
- 杨致远当初是开发了搜索引擎还是只是一个导航网站
- 为啥PHP社区鲜有异步队列,分布式计算,数据分析的项目和讨论
- 百度作为一家靠搜索引擎起家的公司,靠贩卖竞价排名获利,是否违反商业道德