2019/9/19
今天学习了solr,solr是为了解决在大量数据情况下使用数据库进行数据搜索效率低的问题。尤其是模糊查询效率低的问题。
Solr基于Apache推出的基于Lucene引擎实现的全文检索工具。一些公司也使用elastic search。
Solr已经被Apache打包成了一个war文件。如果希望运行,需要结合容器(Tomcat)进行使用。
solr是通过索引搜索的,效率比mysql的模糊查询“%xxx%”快很多。无论是搜索条件还是搜索内容都会被拆词。
solr自带存储功能,但是要用到数据的时候必须要先把Mysql中的数据导入到solr中,且对MySQL进行DML操作时,需要对solr进行数据同步。
solr中的数据并不是和MySQL中的数据完全一致的。solr数据完全是为了搜索和展示搜索效果而进行存储的。
solr以document文件进行存储。Document属于Solr实体类,为了满足各种需求,Solr不能写成固定的。允许程序员对Document中的属性进行控制,以满足项目的需求。
以前在Mysql中是一条数据,在solr中变成了一个document对象。
Solr cloud 让多个Solr协同工作。有点类似集群。Solr和Redis不一样,Redis自身具备集群功能,使用Redis的时候只要开启集群功能就能使用。但是Solr不行,因为Solr是一个war,运行依赖Tomcat,需要把运行Solr的Tomcat连接到一起,形成一个集群,解决方案:使用Zookeeper集群管理功能。
在Zookeeper集群管理功能中,Zookeeper之间需要相互通信,Zookeeper需要自己先形成一个集群。在Zookeeper中要有一个负责所有Zookeeper之间进行通信的角色,称为Leader,其他所有角色负责管理需要管理的软件,这些管理其他软件的Zookeeper称为Follower。
每个节点依然采用一主一备的模式。
今天没有写具体的代码这是安装和配置了相关软件。具体代码在电商项目中写。
安装了solr,中文拆词的配置和使用。以及使用solr的可视化界面进行增删改查。
因为solr cloud让多个solr协同工作,需要借助zookeeper所以,安装了zookeeper的集群。以及solr cloud集群的配置。
今天看了成甲的《好好学习+好好说话》28分钟