为什么使用solr不直接使用mysql内存数据库

为什么使用solr不直接使用mysql内存数据库,第1张

严格来说,lucene负责数据存储,而solr只是一个引擎提供搜索和插入而已,跟数据库的解释器一样,有什么好处呢,比如一个数据库有一个字段存了1000个字,你想从这些字里面搜一个词的时候,普通的数据库只会让你使用like去查询,他会遍历每个字去模糊匹配,效率很低,而且有些是无法查询的,当然除了像一些特殊的数据库带有分词,比如postgresql,那lucene做的事情就是分词,然后去匹配分词的词中是否有你想搜的词就好了,当然了,为了提高这种检索效率和内存节省底层做了很复杂的事情,可以这么简单的认为,全文搜索这件事情上数据库是无法满足的

Lucene:一个开源的搜索库

Engine:屏蔽 Lucene *** 作细节的抽象层

Http:对外提供 restful api,让不同开发语言的应用都可以接入

Elasticsearch是用 Java 开发的,但它却不是只支持Java语言,因为它支持RESTful方式调用,那理论上它是支持所有开发语言的

理解∶因为索引可以去掉重复的词,汉语常用的字和词大概等于 字典+词典;常用的英文在牛津词典也有收录;如果用计算机的速度查询 字典+词典+牛津词典这些内容是非常快的;但是用这些字典、词典组成的文章却是千千万万不计其数;

倒排索引的大小最多也就是 字典+词典。所以通过查询索引,再通过索引和文档的关联关系找到文档速度比较快。

顺序扫描法则是直接去逐个查询那些不计其数的文章就算是计算的速度也会很慢。

主分片数

即 blog 索引的数据,会被分散到 3 个分片里面,起到控制每个分片里文档数量个数的作用,提供查询和搜索效率,可以理解为 Mysql 里的分表。

副本分片

副本分片只是一个主分片的拷贝,作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读 *** 作提供服务。

因为对于单节点的架构来说,进行冗余备份就毫无意义的,只会浪费内存和磁盘。

1、Solr :2004年诞生。ES:2010年诞生。ES 更新【功能越强大】

2、Solr有一个更大、更成熟的用户、开发和贡献者社区

3、当实时建立索引的时候,Solr会产生IO阻塞,而ES则不会,实时建立索引时,ES性能要高于Solr 。

在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。

4、Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】

5、Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。

6、Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。单纯的对已有数据进行检索的时候,solr效率更好,高于es。

7、Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多由第三方插件。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7331432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存