对大数据量查询优化:配置安装Apache Solr搜索引擎7.7整合tomcat及在项目中使用

Apache Solr

什么情况下需要用solr搜索引擎?

在大数据量的查询情况下,如果后台没有采取任何的策略,查询速度上面会有一定的影响,因为在后台Java调用数据库这一层肯定是:select (字段名)from 表名 where (条件); 大部分的项目中查询差不多是这样,如果碰见稍微多的数据量,有可能会利用rownumber 分页以及会在数据库中创建索引,以及在函数使用上的注意等,就到此为止了。一般情况下,查询优化用这个应该是可以解决的,但是如果碰见了大数据量 如十几万、几百万、甚至上千万的数据量(如天猫商城、京东商城物品等),这样做肯定远远不够,试想客户在页面端点击查询 ,页面上显示“加载中…”即使是几秒钟的时间对于客户体验来说也是相当差的。
在学校学习的阶段老师就曾经和我们说,能在大型网站中做查询功能的,远远不是后台select那么简单,当时自己懵懵懂懂有很多疑问,在今年工作中也被我遇到了问题,当我在查询数据库中有16万左右的数据量时候,性能就凸显出来,当我试着建立视图查询直接在数据库中测试的时候,查询一个条件大概需要4秒中的时间才能返回结果集,如果放到了页面,通过ssm框架返回ModelAndView对象到用户面前的时候则大概需要5秒甚至觉得会更多的时间,所以我的项目经理要调整优化,正好将solr的查询交给我了。做查询测试的时候真的是光速,十分的快。虽然完成了任务但是只是知其然而不知其所以然。特此。在过年期间好好研究了solr,并写下这篇博客和各位朋友一起共同进步。如有问题的地方还希望多多留言交流。

一、solr的安装与使用

1.1什么是solr?

Solr是一个高性能,采用Java开发,Solr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中,它提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
至于为什么那么快,还需要等有时间进一步研究底层实现。

1.2安装solr

1.2.1 官网下载

点击solo官网下载
进入界面如下图所示,则是solr官网
在这里插入图片描述

点击进入下载版本介绍页面
在这里插入图片描述
点击以后选择http请求路径下载
在这里插入图片描述
在这里需要注意的是:
1、下载的版本尽量不要现在当前最新的哪一个版本,有时候会有问题,之前在下载maven的时候就出现了问题,可以去看我的问答里面,一般老版本比较稳定且不会有太大的问题
2、注意solr-7.3.1后需要的jdk的版本须在1.8及其以上。
3、下载的版本一定要是二进制版本,如果下载了源码版本是运行不起来的,之前就吃过亏 ,自己还搞了很久十分的麻烦并且还在网上求助了很多人,当运行cmd的时候会下图的错误,在我的问答里面可以看见这个文章
在这里插入图片描述

1.2.2 解压安装

下载完成以后是一个压缩包,在本地建立一个独立的文件夹放加压后的文件如下图所示:
在这里插入图片描述

1.2.3 结构介绍

bin:solr的运行脚本 ,想要运行服务的服务的时候,可以双击运行里面的solr.cmd文件,不过使用的自带的jetty小服务器。

contrib:solr的一些贡献软件/插件,用于增强solr的功能。

dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。

docs:solr的API文档

example:solr工程的例子目录:

example/solr:

扫描二维码关注公众号,回复: 11573332 查看本文章

该目录是一个包含了默认配置信息的Solr的Core目录。

example/multicore:

该目录包含了在Solr的multicore中设置的多个Core目录。

example/webapps:

该目录中包括一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息

1.2.5测试下载

打开cmd切换到解压的路径下进行测试
在这里插入图片描述
可以看见启动在端口号为8983上, 打开网页 输入http://localhost:8983进行访问,如见下图所示,则代表启动成功!
在这里插入图片描述
完成以上步骤。solr安装成功。

1.3 solr整合tomcat

solr 需要运行在一个Servlet容器中,Solr默认提供Jetty(java写的Servlet容器),开发中大部分人用的都是tomcat且jetty并不稳定,所以我的教程使用Tocmat作为Servlet容器进行配置。
(自己配置出问题了。。。等我更新)

猜你喜欢

转载自blog.csdn.net/goGoing_/article/details/104080556
今日推荐