Solr 6.6环境搭建与Solr定义
Posted 爱在心口难开
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr 6.6环境搭建与Solr定义相关的知识,希望对你有一定的参考价值。
Solr6.6理解和环境搭建
前言
为什么要引入Solr,它到底有什么优势。假想有这样一种情况,当我们在oracle去查询一些东西,无非是使用like或者join(当查询条件多,涉及的多表的话)这几种操作。当数据量大的时候,很难相信在大型数据库上去执行高速的查询,有以下两点原因:一是,数据库本身在性能上缺乏亮点,所以我们总提性能。二是,松散的文本,查询的话基本都是基于like,而join和like是数据库的性能杀手,与最求高效快速的理念相违背。所以我们需要一种和sql完全不同的数据检索方式,由此引出了solr。
- 1. 官方定义:
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 创建的索引。
简单来说:solr就是一个开源的搜索引擎框架。
- 2. 原理:
Solr对外提供标准的http接口来实现对数据的索引的增加、删除、查询。在 Solr 中,用户通过向部署在servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回Solr 的标准 XML 响应,也可以配置Solr 的备用响应格式。
可以向 Solr 索引
servlet 传递四个不同的索引请求:
add/update 允许向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。
commit 告诉 Solr,提交后就可以搜索到。
optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。(官方:执行明确的优化,导致所有段的合并到一个。)
delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。
也就是说:solr可以对数据进行增加、删除、查询。
- 3. 搭建solr环境条件
JDK:jdk1.8.0
开发环境:eclipse4.7
运行环境:apache-tomcat-8.0.32
Solr:solr-6.6.0
- 4. 搭建solr
解压solr-6.6.0,打开解压的目录:
bin:Solr的脚本启动工具目录。
contrib:放关于solr的扩展。
dist:在这里能找到Solr的核心JAR包和扩展JAR包。当我们试图把Solr嵌入到某个应用程序的时候会用到核心JAR包。
distàsolrj-lib:包含构建基于Solr的客户端时会用到的JAR包。
distàtest-framework:包含测试Solr时候会用到的JAR包。
docs:该文件夹里面存放的是Solr文档,离线的静态html文件,还有API的描述。
example:包含Solr的简单示例。
licenses:各种许可和协。
server:在本地把Solr作为服务运行的必要文件都存放在这里。
- 5. 部署属于自己的Solr
a) 将solr-6.6.0\\server\\solr-webapp下的webapp复制到tomcat的webapps目录下,并改名为solr(名字可以改成其他)
b) 将solr-6.6.0\\server\\lib\\ext的jar包复制到apache-tomcat-8.0.32\\webapps\\solr\\WEB-INF\\lib目录下
将solr-6.6.0\\dist下的solr-dataimporthandler-6.6.0.jar和solr-dataimporthandler-extras-6.6.0.jar复制到apache-tomcat-8.0.32\\webapps\\solr\\WEB-INF\\lib目录下
将solr-6.6.0\\server\\lib下的以metrics开头的5个jar包复制到apache-tomcat-8.0.32\\webapps\\solr\\WEB-INF\\lib目录下,这三步的目标路径都是一样的。
如下图:
c) 接下来创建存放core的目录,我选择的是E盘创建,tomcat是在D盘,在E盘创建solrhome文件夹,将solr-6.6.0\\server\\solr下的所有文件复制到E:\\solrhome。如下图:
d) 在tomcat下的solr里的配置文件来指定我创建的存储core的目录。
打开apache-tomcat-8.0.32\\webapps\\solr\\WEB-INF下的web.xml,定位到40行,将下面一段注解打开,并修改<env-entry-value>值为E:/solrhome,
并把168行以及以下的注解掉,为什么要注解掉呢?这是一段权限代码,也就是你在浏览器打开solr,其他人也可以登录,并对core进行优化,占用和消耗资源,从而在打开solr时进行账号密码登录,这里我就全部注解掉。如下图:
注解掉
<!-- Get rid of error message -->
<!--<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>-->
e) 在apache-tomcat-8.0.32\\webapps\\solr\\WEB-INF目录下创建classes文件夹,并将solr-6.6.0\\server\\resources下的log4j.properties复制过去,如下图:
f) 环境搭建完成,启动tomcat,访问localhost:8080/solr/index.html,成功访问。
以上是关于Solr 6.6环境搭建与Solr定义的主要内容,如果未能解决你的问题,请参考以下文章