首页 > 代码库 > Solr 6.6环境搭建与Solr定义(一)

Solr 6.6环境搭建与Solr定义(一)

Solr6.6理解和环境搭建

前言

     为什么要引入Solr,它到底有什么优势。假想有这样一种情况,当我们在oracle去查询一些东西,无非是使用like或者join(当查询条件多,涉及的多表的话)这几种操作。当数据量大的时候,很难相信在大型数据库上去执行高速的查询,有以下两点原因:一是,数据库本身在性能上缺乏亮点,所以我们总提性能。二是,松散的文本,查询的话基本都是基于like,而join和like是数据库的性能杀手,与最求高效快速的理念相违背。所以我们需要一种和sql完全不同的数据检索方式,由此引出了solr。

  1. 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就是一个开源的搜索引擎框架。

 

  1. 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可以对数据进行增加、删除、查询。

 

  1. 3.        搭建solr环境条件

                        JDK:jdk1.8.0

                       开发环境:eclipse4.7

                       运行环境:apache-tomcat-8.0.32

                       Solr:solr-6.6.0

 

  1. 4.        搭建solr

解压solr-6.6.0,打开解压的目录:

 技术分享

binSolr的脚本启动工具目录。

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作为服务运行的必要文件都存放在这里。

 

  1. 5.        部署属于自己的Solr

a)         solr-6.6.0\server\solr-webapp下的webapp复制到tomcatwebapps目录下,并改名为solr(名字可以改成其他)

 技术分享

 

 

b)         solr-6.6.0\server\lib\extjar包复制到apache-tomcat-8.0.32\webapps\solr\WEB-INF\lib目录下

solr-6.6.0\dist下的solr-dataimporthandler-6.6.0.jarsolr-dataimporthandler-extras-6.6.0.jar复制到apache-tomcat-8.0.32\webapps\solr\WEB-INF\lib目录下

solr-6.6.0\server\lib下的以metrics开头的5jar包复制到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定义(一)