Solr 是基于开放标准的,它是高度可扩展的。Solr 查询是简单的 HTTP 请求 URL,响应是一个结构化文档:主要是 JSON,但也可以是 XML、CSV 或其他格式。这意味着各种各样的客户端将能够使用 Solr,从其他 Web 应用程序到浏览器客户端、丰富的客户端应用程序和移动设备。任何能够使用 HTTP 的平台都可以与 Solr 对话。

学习solr 除了官网文档我们还可以看这边的中午文档:https://www.w3cschool.cn/solr_doc/solr_doc-ltzn2fm4.html

solr 默认是有web容器的 jetty ,我们也可以将它存放在tomcat 里面。

直接使用默认的话是可以直接启动的,要使用tomcat 的话就比较麻烦点了。

由于tomcat 在企业应用较多,相对jetty 更为熟悉。所以我们这里使用的是tomcat进行搭建。

jetty 与tomcat 的对比

安装 solr

下载安装java

安装tomcat

下载solr(7.6版本) :

cd  /opt wget http://mirrors.shu.edu.cn/apache/lucene/solr/7.6.0/solr-7.6.0.tgz
tar -xzf solr-7.6.0.tgz

配置solr 到tomcat(关键)

将solr 的webapp文件复制到tomcat的webapps目录下并命名为solr

cp -r /opt/solr-7.6.0/server/solr-webapp  /opt/tomcat-solr/webapps/solr

配置依赖包

将solr下 /ext 文件夹中 所有的jar 包复制到 tomcat 里的solr 目录下的WEB-INF/lib 下

cp -r /opt/solr-7.6.0/server/lib/ext/ /opt/tomcat-solr/webapps/solr/WEB-INF/lib/

将solr下 server/lib/metrics开头的jar包复制到 tomcat里的solr 目录下的WEB-INF/lib 下

cp -r /opt/solr-7.6.0/server/lib/metrics*.jar   /opt/tomcat-solr/webapps/solr/WEB-INF/lib/

创建tomcat solr 的 classes 文件

mkdir /opt/tomcat-solr/webapps/solr/WEB-INF/classes

复制 jetty-logging.properties,log4j2.xml 到 classes 文件夹下

cp   /opt/solr-7.6.0/server/resources/jetty-logging.properties   /opt/tomcat-solr/webapps/solr/WEB-INF/classes
cp /opt/solr-7.6.0/server/resources/log4j2.xml /opt/tomcat-solr/webapps/solr/WEB-INF/classes

创建 solr 的core 的主目录(也就是存放core的位置)

cp -r /opt/solr-7.6.0/server/solr  /opt/solrhome

修改配置文件指定solr的home

vim /opt/tomcat-solr/webapps/solr/WEB-INF/web.xml

添加以下内容:(注意第三行的值要替换成你们solr的home的绝对路径)

<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

添加位置:

解决限制资源访问

如果我们按照上面的配置好了,并启动好了tomcat,那么我们直接去访问我们的solr 会发现这个错:

HTTP Status 403 - Access to the requested resource has been denied,拒绝我们的访问资源请求。

解决办法:

注释

<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>

更改图片位置

然后启动tomcat ,我们访问:http://ip:port/solr/index.html

启动成功图示:

遇到的问题以及解决办法:

错误1

错误内容

Unable to resolve canonical hostname for local host,​ possible DNS misconfiguration. Set the 'solr.dns.prevent.reverse.lookup' sysprop to true on startup to prevent future lookups if DNS can not be fixed.

问题原因:

通过解析hostname 找不到对应的本地主机。原因是我更改了hostname,但是我没有更改/etc/hosts 文件,你可以直接 ping 下主机名,看看是否能正常解析到127.0.0.1 。我的是不可以,所以这里报解析错误。

解决办法:

编辑 /etc/hosts文件

在 127.0.0.1 和::1 后面添加 你的新主机名

示例: 我的主机名是ngrok

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ngrok
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ngrok

创建core

创建core 目录

我这里的solr 的home目录是 /opt/solrhome

mkdir  /opt/solrhome/test1

添加配置文件

将配置文件复制到 test1 目录下

cp  /opt/solrhome/configsets/_default/conf/    /opt/solrhome/test1/

添加data目录

用于存放数据

mkdir    /opt/solrhome/test1/data/

添加core.properties 文件

name=test1 ,test1值换成你们core的名称。

echo "name=test1" >/opt/solrhome/test1/core.properties

我们重新启动就可以在 core 看到我们新加的目录名称了。

遇到的问题以及解决办法:

错误一

错误内容

2019/1/9 上午11:01:16
WARN false x:ljf_dev SolrConfig Couldn't add files from /opt/solrhome/ljf_dev/../../../../contrib/extraction/lib filtered by .*\.jar to classpath: /opt/solrhome/ljf_dev/../../../../contrib/extraction/lib
2019/1/9 上午11:01:16
WARN falsex:ljf_dev SolrConfig Couldn't add files from /opt/solrhome/ljf_dev/../../../../dist filtered by solr-cell-\d.*\.jar to classpath: /opt/solrhome/ljf_dev/../../../../dist

错误原因

上面的错误是说加载不到那些jar包 ,上面的这些jar包还在我们解压的文件里面,它肯定是找不到,我们先找到我们这个配置文件,然后修改它寻找的路径。

配置文件是 core 目录下的 conf 里的 solrconfig.xml

我们可以看到默认的配置路径是: 这个路径是solr的安装路径,我们可以更改成绝对路径

  <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

解决办法

将那些jar包放在一个固定路径,然后更改配置文件里的路径为绝对路径

#备份下配置文件
cp /opt/solrhome/test1/conf/solrconfig.xml /opt/solrhome/test1/conf/solrconfig.xml.bak
#将依赖文件复制到 tomcat solr 下
cp -r /opt/solr-7.6.0/dist/ /opt/tomcat-solr/webapps/solr/
cp -r /opt/solr-7.6.0/contrib/ /opt/tomcat-solr/webapps/solr/ 然后更改配置文件 /opt/solrhome/test1/conf/solrconfig.xml 修改为绝对路径,下面为为修改后的。
<lib dir="/opt/tomcat-solr/webapps/solr/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="/opt/tomcat-solr/webapps/solr/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="/opt/tomcat-solr/webapps/solr/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="/opt/tomcat-solr/webapps/solr/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="/opt/tomcat-solr/webapps/solr/dist/" regex="solr-velocity-\d.*\.jar" />

这样重新启动tomcat 就不会再有警告了。

配置分词器

分词器我们使用的是IK Analyzer

下载

下载链接 :百度云盘 提取码:i9uv(失效了评论区留言啊,我看到了会更新的)

添加依赖文件

下载好了后解压上传到服务器 :

有以下文件:

ext.dic   # 词典
IKAnalyzer.cfg.xml #配置文件
ik-analyzer-solr5-5.x.jar #jar包
solr-analyzer-ik-5.1.0.jar #jar包
stopword.dic # 词典

我们需要将 jar 包放到 tomcat 下的solr 的WEB-INF/lib/ 下

将配置文件和词典 移动到 到 tomcat 下的solr 的WEB-INF/classes 下

cp  /tmp/ikanalyzer-solr5/*.dic  IKAnalyzer.cfg.xml  /opt/tomcat-solr/webapps/solr/WEB-INF/classes/
cp /tmp/ikanalyzer-solr5/*.jar /opt/tomcat-solr/webapps/solr/WEB-INF/lib/

core 配置

core 配置

编辑我们solr home 下的 core 目录下conf里的managed-schema文件

vim  /opt/solrhome/ljf_dev/conf/managed-schema

添加以下内容

 <fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

添加后示图:

使用分词器。分词合作共赢

不知道为啥,我总觉得这个分词器有点不太准确。

扩展字典

vim /opt/tomcat-solr/webapps/solr/WEB-INF/classes/IKAnalyzer.cfg.xml

<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>

注意事项:

在tomcat 运行之初我看到了错误日志

Missing Java Option solr.log.dir. Logging may be missing or incomplete

针对这次错误:https://issues.apache.org/jira/browse/OFBIZ-9375

也未给出答案,但是上面说到这个是一个不影响使用报错。

附加配置

core 添加字段

vim  /opt/solrhome/test1/conf/managed-schema

<field name="age" type="string" multiValued="false" indexed="true" stored="true"/>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="info" type="text_ik" multiValued="false" indexed="true" stored="true"/>
<field name="name" type="string" multiValued="false" indexed="true" stored="true"/>

指定默认搜索字段

vim  /opt/solrhome/test1/conf/solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<!-- 定义默认搜索字段 -->
<str name="df">info</str>
</lst>
</requestHandler>

配置数据源

vim  /opt/solrhome/test1/conf/solrconfig.xml

添加以下内容:

 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

并新建data-config.xml文件配置数据库信息

data-config.xml 文件内容为:

 <?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="dataSource" type="JdbcDataSource"
driver="net.sourceforge.jtds.jdbc.Driver"
url="jdbc:jtds:sqlserver://url:1433/database;useLOBs=false"
user="user"
password="password" />
<document>
<entity name="Table" dataSource="dataSource" pk="id"
query="SELECT * FROM Table">
<field column='id' name='id' />
<field column='name' name='name' />
<field column='age' name='age' />
<field column='info' name='info' />
</entity>
</document>
</dataConfig>

本地较多内容来自但其中错误及解决方法均本人自己撰写:

https://blog.csdn.net/derlinchen/article/details/85719930

连接数据库:(上面写的不太完善)

https://blog.csdn.net/Amor_Leo/article/details/85256735

solr 7.6 安装部署与遇到的问题的更多相关文章

  1. solr集群安装部署

    一.安装部署zookeeper集群 zookeeper集群 二.solr集群部署 集群配置 IP | 节点名称 | 环境 --- | --- | --- 192.168.137.128 | 192.1 ...

  2. solr笔记之安装部署到tomcat

    1. 下载 solr 去官网下载,下载的时候选清华的镜像源,这个页面:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/7.1.0/ 在/ ...

  3. 【Solr】Solr的安装部署

    目录 Solr安装部署 Solr Web界面分析 回到顶部 solr安装和部署 solr下载 http://lucene.apache.org/ 安装solr,就是去部署它的war包,war包所在的位 ...

  4. Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  5. Ranger安装部署 - solr安装

    1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...

  6. Nutch搜索引擎(第2期)_ Solr简介及安装

    1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...

  7. solr6安装部署

    难得写篇自己的原创文档了,哈哈哈,原谅我知识浅薄,积淀太少 一.涉及到的软件和环境jdk1.8.0_92,tomcat8,zookeeper3.4.8,solr6.1.0(solr6需要jdk8以上环 ...

  8. Nutch搜索引擎Solr简介及安装

    Nutch搜索引擎(第2期)_ Solr简介及安装   1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...

  9. Solr7 安装部署 管理界面介绍

    Solr7 安装部署 管理界面介绍 本章重点介绍CentOS 安装部署Solr7 ,Solr的管理界面介绍,添加核心Core配置,Dataimport导入数据,Documents 在线维护索引,Que ...

随机推荐

  1. C++中的“error:LNK2005 已经在*.obj中定义”异常问题

    C++中的“error:LNK2005 已经在*.obj中定义”异常问题 异常现象如下:

  2. [FMX]在 FMX 程序中绘制单像素宽度的直线 [FMX]在 FMX 程序中绘制单像素宽度的直线

    [FMX]在 FMX 程序中绘制单像素宽度的直线 2017-10-09 • Android.Delphi.教程 • 暂无评论 • swish •浏览 353 次 在前面的一篇文章中,我介绍了一种绘制低 ...

  3. 【转】【译】【Win10】在你的程序标题栏中显示后退按钮

    原文地址:http://www.sharpgis.net/post/2015/05/21/Displaying-a-backbutton-in-your-app-window 免责声明:这篇文章基于 ...

  4. ARM 编译工具keil 和 IAR 命令行编译和下载

    目的 不管是Keil还是IAR对代码补全,高亮等编辑功能支持的不是很好,虽然现在的Keil 5.25对界面的支持好了很多,但是很多人还是青睐于第三方的编辑器,命令行的编译方式可以让我们在使用第三方编辑 ...

  5. VS2012安装ClaudiaIDE失败

    上班看见同事的VS界面.如下图: 出于好奇就问他是怎么弄的,同事告诉我说是VS的一个插件ClaudiaIDE:于是我就去官网上下载ClaudiaIDE, 官网下载ClaudiaIDE链接:http:/ ...

  6. Linux中目录proc/net/dev详解

    在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性.幸运的是Linux提供了LKM机制可以使我们在 ...

  7. AtomicInteger源码解析

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.原子类 可以实现一些原子操作 基于CAS 下面就以AtomicInteger为例. 2.AtomicIn ...

  8. day85 ModuleForm Form组件

    1 forms组件与modelform组件 forms组件: https://www.cnblogs.com/yuanchenqi/articles/9036474.htmlmodelForm组件:h ...

  9. CentOS 7 - 最小化安装以及引发的问题!

    一,操作系统和虚拟机 操作系统:CentOS 7 官方网站:https://www.centos.org 下载地址:https://www.centos.org/download/ 下载版本分三个:D ...

  10. 访问www.baidu.com后会发生什么(一次完整的网络通讯过程)

    1.在浏览器中输入www.baidu.com 这意味着浏览器要向百度发送一个网页数据包,要发送数据包,需要知道对方的IP地址,这里我们只知道网址为www.baidu.com,却不知道IP地址,此时应用 ...