搜索引擎与数据库检索区别
数据库也支持模糊查询,搜索引擎能实现的功能貌似数据库也支持,那两者有什么区别?
检索关键词不同
搜索引擎的都是模糊搜索,根据词来搜索,这个词一般是有限数目的,也就是说对输入的文档会进行分词。
而数据库的模糊搜索,是没有限制的,可以不是词。也就是说使用数据库的模糊搜索搜出的结果,搜索引擎可能搜索不到。例如“公安部”三个字,如果搜索“公安”搜索引擎和数据库都能匹配到,但是搜索“安部”,数据库是可以匹配到的,但搜索引擎如不特殊处理是搜索不到的。
检索方式不同
搜索引擎需要有词(对文档进行分词)的索引,需要额外占用一定空间。有索引速度当然更快,一般是几秒。例如非常常见的倒排索引,能够极大的优化查询速度。在搜锁的文档规模成倍增加的时候搜索的速度影响不大。什么是倒排索引,wiki上解释简单清楚。
而数据的模糊查询一般是会全表扫描,忽略比配搜索词的时间,单是IO上就费时间很多。磁盘一般几十兆的读取速度。
结果更新实时性不同
上面说了搜索引擎需要建立词的索引,那么就有个创建索引的过程。当待搜索的内容更新的时候,搜索结果可能没有更新。与数据库这种全表扫描相比,肯定实时性不好。(cap中的一致性)
两者结合
就行关系型数据库与非关系型数据库一样,解决的问题场景不一样。而且有时可以相互配合使用。例如使用搜索引擎查找出关键字匹配的商品,返回商品id,此时拿着这些商品id去数据库中查询,数据库中建立好索引,这种查询很快。