Solr 理论介绍 与 Win10 安装 Solr 4.10.3

Solr 简 介

  • Lucene 是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene 提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以 Lucene 为基础构建全文检索引擎。
  • Solr 的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过 Solr 可以非常快速的构建企业的搜索引擎,通过 Solr 也可以高效的完成站内搜索功能。
  1. Lucene 主页:http://lucene.apache.org/
  2. Solr 主页:http://lucene.apache.org/solr/
  3. Solr 全部版本下载地址:http://archive.apache.org/dist/lucene/solr/
  4. Solr 使用指南:https://wiki.apache.org/solr/FrontPage

  • Solr 可以独立运行在 Jetty、Tomcat 等 Servlet 容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr 根据 xml 文档添加、删除、更新索引 。
  • Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。
  • Solr 不提供构建 UI 的功能,Solr 提供了一个管理界面,通过管理界面可以查询 Solr 的配置和运行情况。
  • Solr 对 Lunece进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置可扩展并对查询性能进行了优化
  • Solr 提供了一个完善的功能管理界面,是一款非常优秀开放源码的全文搜索引擎
  • Solr对外提供类似于Web-serviceAPI接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
  • Solr 支持多种输出格式(包括XML/XSLT 和JSON等格式),易于安装和配置,而且附带了一个基于HTTP 的管理界面。
  • SolrApache的一个项目!同样几百万的数据用Mysql会咔很久,而Solr照样能秒查

Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.

(Solr 是高度可靠的、可扩展和容错的,提供分布式索引、复制和负载均衡查询、自动故障转移和恢复、集中式配置等。Solr 为许多世界上许多知名的互联网站点提供搜索和导航功能。

Solr 与 Lucene

  • Solr 与 Lucene 并不是竞争对立关系,恰恰相反 Solr 依存于 Lucene,因为 Solr 底层的核心技术是使用Lucene 来实现的。
  • Solr 和 Lucene 的本质区别有以下三点:
  1. Solr 是搜索服务器,企业级管理,而 Lucene 本质上是搜索库,不是独立的应用程序
  2. Lucene 专注于搜索底层的建设,而 Solr 专注于企业应用。
  3. Lucene 不负责支撑搜索服务所必须的管理,而Solr负责。
  • 一句话概括:Solr 是 Lucene 面向企业搜索应用的扩展。

应用领域

  • 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。
  • 单独使用 Lucene 实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议单独使用。
  • 基于 Solr 实现站内搜索扩展性较好并且可以减少程序员的工作量,因为 Solr 提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。

Solr 下 载

目录结构

  • 不同版本目录结构有所不同。

  • bin:solr 的运行脚本
  • contrib:solr 的一些软件/插件,用于增强 solr 的功能。
  • dist:该目录包含 build 过程中产生的 war 和 jar 文件,以及相关的依赖文件。
  • docs:solr 的 API 文档
  • example:solr 工程的例子目录
  1. example/solr:该目录是一个包含了默认配置信息的Solr的Core目录。
  2. example/multicore:该目录包含了在Solr的multicore中设置的多个Core目录。
  3. example/webapps:该目录中包括一个solr.war,该war可作为solr的运行实例工程。
  • licenses:solr 相关的一些许可信息

Solr 4. 10. 3 安装

  • 根据系统需要下载对应的 Solr 项目,不同版本的 Solr 安装略有不同,Linux 与 Windows 系统安装也略有不同
  • 本文安装环境:Windows 10 + Tomcat 9.0+ Solr 4.10.3 + JDK 8 (Tomcat 版本可以是8.0、7.0等)
  • Solr 本身就是一个 Web 应用,所以只需要部署项目,然后做一些配置即可。

安装与配置

  • 1)找到下载好的 Solr 中的 solr-xxx\example\webapps 下面的 solr.war 项目
  • 然后 Ctrl + C 复制它放入到 Tomcat 下的 webapps 目录下。

  • 2)运行 Tomcat 服务器让它自动解压 solr.war 项目。
  • Tomcat 服务器启动完成,solr 应用解压好之后,先关闭 Tomcat 服务器
  • 接着删除原来的 solr.war 文件,来下解压好的 solr 应用即可

  • 3)找到下载好的 Solr 中的 solr-xxx\example\lib\ext 目录
  • 然后复制 ext 目录下的所有 jar 包
  • 接着放置到 Tomcat 的 webapps 下的 solr 应用中的 lib 目录中 (说白了就是 solr应用还依赖这些扩展的 日志 jar包 )

  • 4)为 Solr 应用配置 solrHome(关于 Solr Home、Solr Core 文档后面会做详细解释,这里先讲配置)
  • 新建一个 solrHome 文件夹作为 solr 的 home(主)目录( 位置任意,名字自己取)
  • 然后拷贝下载好的 Solr 中的 solr-xxx\example\solr 下面的所有文件到 solrHome 文件夹下。

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

  • 5)solrHome 目录准备之后,就需要告诉 Tomcat 服务器下的 solr 应用指向这个 solrHome
  • 进入 tomcatXxx\webapps\solr\WEB-INF,修改 web.xml,取消 env-entry 注释,将 env-entry-value 值指向准备好的 solrHome 目录

  • 6)配置 solrCore 的依赖与插件,不使用也是可以的,不过建议添加上
  • 找到下载好的 solr-xxx 下面的 contrib 与 dist 目录,全部复制,然后放置到自己指定的位置去,因为还会在 solrHome 下面的 solrCore 中的配置文件中进行指定它们

  • 如下所示,就把它们两个放在了 solrHome 同级目录中

  • 找到 solrHome 下面的 collection1(SolrCore)中的 conf 目录下的 solrconfig.xml 文件打开它 

  • 然后修改文件中插件和依赖的路径,可以像如下所示使用相对路径,也可以删除 "${xxx}" 这一部分,然后使用绝对路径
  • 注意相对路径的是以 conf 目录为基准,往上走两级,刚好到 contrib 与 dist 

  • 如果这一步的 solrCore 插件与依赖没有配置成功,则运行时,日志会提示找不到它们,但只是警告,并不影响程序运行

测试运行

  • 7)最后启动 Tomcat 服务器,浏览器地址栏访问:localhost:8080/solr

Solr 核心概念

solrHome

  • SolrHome 是 solr 的核心目录,一个 solrHome 中可以有多个 solr 实例,默认会有一个实例 collection1
  • SolrHome 目录名称可以自己定义,只需在 solr 应用中的 web.xml 中指定即可
  • SolrHome 的位置自己定义,但是不建议放到 Tomcat 下,因为随着应用运行时间的逐渐增长,solrCore 中的索引和文档会持续增加。

solrCore

  • SolrHome 下的 collection1 就是一个默认的 solrCore,可以设置多个,一个 SolrCore 就是一个 solr 的实例
  • 每个实例对外单独的提供索引和文档的增删改查服务,默认实例叫做 collection1
  • 一个 SolrCore 相当于 mysql 中的一个数据库
  • SolrCore 之间是相互隔离。
  • SolrCore 中的 conf 目录包含了索引 solr 实例的配置信息。
  • conf 文件夹下的 solrconfig.xml 配置实例的相关信息,如果使用默认配置可以不用做任何修改。

 

 

 

 

猜你喜欢

转载自blog.csdn.net/wangmx1993328/article/details/82343484