Solr 单机版安装

1 安装环境

1.1安装 jdk

1.1.1JDK 版本:

jdk-8u11-linux-x64.tar.gz

1.1.2环境变量配置

export JAVA_HOME=/usr/local/jdk

export

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$JAVA_HOME/bin:$PATH

1.2安装 tomcat

1.2.1Tomcat 版本

apache-tomcat-7.0.47.tar.gz

2 安装 Solr

Solr 版本:solr-4.10.3.tgz.tgz

2.1Solr 是由两个部分构成:

1) Solr 的 web 服务

2) Solr 的索引库

2.2上传 Solr 压缩包

2.3解压 Solr 压缩包

2.4Solr 的目录介绍

bin:启动 solr 的一些脚本,但是需要依赖 jeety 容器

contrib:存放的是 solr 对第三方插件支持的内容

dist:solr 编译后所产生一些文件夹。War 或者是 jar

example:是 solr 的案例。在该目录下有两个文件夹对于我们来说比较重要。

1) webapps:在该目录中存放了一个 solr 的 war 包。与 dist 目录下的那个 war 文 件是

同一个,只是存放的目录及名称不同而已。

2) solr: 是 solr 的一个标准的索引库示例。

3) lib/ext:该目录下存放的是一些日志处理器的 jar 包。Solr 的 web 服务也要依赖于日志

处理的 jar 包。所以我们在安装 solr 服务时,需要将该目录下的 jar 拷贝

给 solr 服务

2.5安装 Solr 服务

其实安装 solr 服务就是将 solr 的 war 包,拷贝到 tomcat 的 webapps 目录下。

2.6启动 tomcat,解压 war 包

查看 tomcat 的启动日志,查看是否做 war 的解压

tailf logs/catalina.out

2.7添加服务中所依赖的 jar 包

由于我们在解压后的 solr 的项目中,需要依赖一些日志处理的 jar 包。所以我们在添加

依赖的 jar 包时,需要将原来的 war 删除掉。否则 tomcat 再次启动时,会将原来的目录覆盖

掉。那么新添加的 jar 包也就没了。注意:在删除 war 包时,一定要在 tomcat 关闭的状态下

删除 war 包。如果在 tomcat 启动状态下删除 war 包,那么 tomcat 在关闭时会将解压的目录一并的也删除掉。

2.8安装 solr 索引库

在 solr 的解压目录的 example 目录下有个 solr 的目录,就是 solr 的一个基本的索引库示

例。

2.9拷贝索引库

将该索引库拷贝到指定目录下(可以是任意目录),虽然具备任意性。但是也不能太随便。

应该放到/usr/local/solrhome。先创建 solrhome 目录

2.10solr 的服务中配置索引库

在 solr 的服务中配置索引库的位置注意:需要配置的路径为索引库的根。可以使用 linux

中的 pwd 命令查看绝对路径。将该路径添加到 solr 服务中的 web.xml 文件中 Solr 服务在启

动时,是通过他的 web.xml 文件中的节点配置获取索引库的绝对位置的。vim web.xml 在

web.xml 中找到.注意:该节点默认是注释状态的,我们需要先去掉注释。然后将

拷贝的索引库的路径添加到该节点的节点中

2.11访问 Solr 服务

启动 tomcat 通过 solr 的管理页面可以对 solr 进行操作了。启动 tomcat 后,打开浏览器

输入 solr 的访问 url 就可以访问 solr 服务了

3 Solr 索引库

3.1solr home 目录结构

3.1.1solr.xml 配置 solr 集群

3.1.2collection1(索引库:solr core)

3.1.3core.properties 设置索引库的名称

3.1.4data 存放索引

3.1.5conf 索引库的配置目录

3.1.5.1 schema.xml:配置字段以及字段类型

3.2索引库配置

schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否

分词,是否存储等等。

3.2.1如何定义索引库中的 Field

:定义域

name:表示域的名称,是强制必须有的属性

type:域类型的名称,与 fieldType 元素的 name 属性值对应,是强制必须有的属性

indexed:是否参与检索。true 即表示需要对该域进行索引。默认值为 false

stored:是否将 field 域中的内容存储到文档域,简单通俗的来说,就是你这一个

field 需不需要被当作查询结果返回。

required:表示这个域是否是必须要在 document 中存在,默认值为 false,如果此配

置项设为 true,则你的 document 中必须要添加此域,否则你创建索引时会抛异常。

3.2.2如何定义索引库中的 FieldType

:定义域的类型

Name:域类型的名称,作为域类型标识符存在,在定义域(Field)时使用的类型

(FieldType)属性就是域类型的名称。

Class:域类型的数据类型,该属性指向的是 solr 中的已定义的类型,或者是用户定

义的类型,域类型中的数据会被初始化成 class 执行类类的对象。

sortMissingFirst/sortMissingLast:控制当排序域的值不存在时该文档(Document)

所在队列的位置。true 是则在队头/队尾

3.2.3如何定义索引库中的 CopyField

:复制域。可实现更新与查询分离

Source:源域

Dest:目标域

3.2.4Solr 的索引机制

3.2.4.1 正排索引(正向索引)

正排索引是以文档的 ID 为关键字,索引文档中每个字的位置信息,查找时扫描索引中

每个文档中字的信息直到找出所有包含查询关键字的文档。

但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大

延长,检索效率低下。

尽管正排索引的工作原理非常的简单,但是由于其检索效率太低,除非在特定情况下,

否则实用性价值不大

3.2.4.2 倒排索引(反向索引)

对数据进行分析,抽取出数据中的词条,以词条作为 key,对应数据的存储位置作为

value,实现索引的存储。这种索引称为倒排索引。

当 solr 存储文档时,solr 会首先对文档数据进行分词,创建索引库和文档数据库。所谓

的分词是指:将一段字符文本按照一定的规则分成若干个单词。

3.2.5配置中文分词器(IK Analyzer)

3.2.5.1 上传中文分词器 jar 包,以及配置文件

3.2.5.2 将中文分词器的配置文件以及 jar包拷贝到 Solr 所对应的目

录下

将配置文件需要放到 classes 目录下。

在 solr 中的 WEB-INF 下时没有 classes 目录的。我们需要先创建一个

Jar 包放到 WEB-INF/lib 目录下

3.2.5.3 在 schema.xml 中配置中文分词器

3.2.5.4 测试成功

你可能感兴趣的:(Solr 单机版安装)