一、Solr概述
1、Solr概述
Solr是一个独立的企业级搜索应用服务器、它对外提供类似于web-service的API接口、用户可以通过http请求、
向搜索引擎服务器提交一定格式的文件、生成索引、也可以通过http访问提出查找请求、并得到各种格式的返回结果、
Solr本质是基于Lucene的全文搜索服务器、同时对其进行了扩展、提供了比Lucene更为丰富的查询语言、
同时实现了可配置可扩展、并对查询性能进行了优化、并提供了一个完善的功能管理界面。
2、Solr下载及安装
官网:http://lucene.apache.org/solr/
历史版本下载网址:http://archive.apache.org/dist/lucene/solr/
本博客用的是4.10.2版本
3、Solr目录结构
安装:解压即安装。如下图
解压后为solr-4.10.2为安装目录
solr-4.10.2/example目录
Solr内部有一个内置的WEB容器,叫Jetty.Jetty是一个WEB容器
Solr目录:包含全文检索要存储的索引数据以及相关的一些配置文件。
solr-webapp和webapps:其实包含的是一样的内容,
都是Solr的内置Web应用,我们可以通过Http请求访问该应用,实现对Solr服务的管理和访问
start.jar:web应用需要一个Web容器来启动,
而这个jar包会使用一个叫做Jetty的WEB容器(类似与Tomcat),来启动Solr的Web服务。
二、Solr部署到Tomcat上
1、使用solr央置的Jetty服务器启动solr
步骤:
1) 进入solr-4.10.2/example目录
2) 打开命令行,执行 java -jar start.jar 命令,即可启动Solr服务
3) 打开浏览器,通过http://localhost:8983/solr来访问Solr管理页面。(Jetty服务的默认端口是8983)
2、将Solr部署到Tomcat中
步骤:
(1)、部署Web服务,将solr-4.10.2/example/webapps/solr.war复制到自己的tomcat/webapps目录中,并解压
(2)、在Tomcat中加入相关jar包:将需要的jar包复制到tomcat/webapps/solr/WEB-INF/lib下、如图
<为了防止不必要的错误、将如下包也拷到D:\apache-tomcat-8.5.31\lib>
(3)、修改Tomcat配置文件,指向Solr的索引库及配置目录。
注意,拷贝solr-4.10.2/example/solr目录,到D盘、D:/develop/solr、把这个文件夹复制出来,独立使用
(4)、打开tomcat/bin/catalina.bat文件、添加一条配置信息、set "JAVA_OPTS=-Dsolr.solr.home=d:/develop/solr"
(5)、进入tomcat/bin目录、点击startup.bat启动tomcat
(6)、打开浏览器、访问http://localhost:8080/solr
注意:如果浏览器运行有错误就修改这里:如下图
运行结果:
三、Solr管理页面
1、DashBoard(仪表盘)
仪表盘,显示Solr的基本信息。其中包括运行时间,版本信息,JVM及系统内存使用情况。
2、Logging(日志)
显示Solr运行过程中的错误信息和异常信息。其中,黄色代表警告,红色代表异常。
Level 是用来控制相关类日志的显示信息的内容,将Level选项点开。其中:
ALL:显示全部信息
INFO:除了正常信息,其余信息全部显示
WARN:显示警告信息
ERROR:显示异常信息
UNSET:移除之前设置的信息
3、Core Admin (Core管理)
在Solr中,每一个Core,代表一个索引库,里面包含索引数据及其信息。
Solr中可以拥有多个Core,也就同时管理多个索引库!就像在MySQL中可以有多个database一样!
Core 管理:索引库管理,索引库优化等。(如下图)
主要包括 Add Core(添加 Core)、Unload(卸载 Core)、Rename(重命名 Core)、Optimize(优化索引库)几个功能。
以Solr官方的例子basic_configs的Core为例,
其中:
instanceDir:代表当前 Core 的根目录
dataDir:代表当前 Core 索引文件的存放目录
numDocs:代表当前 Core 索引文档数量。
maxDoc:代表当前 Core 最大索引文档数量。
4、JavaProperties和ThreadDump
Java和Jetty或Tomcat一些属性信息,jdk版本信息等等。
JVM 中的所有活动线程的Thread Dump,Java的运行参数。
5、CoreSelector(Core选择器)
5.1、界面预览
这里可以看到目前存在的所有Core,并且可以选择其中一个,进行更详细的操作:
5.2、通过Solr管理界面添加索引数据
5.3、通过Solr管理界面查询索引数据
查询参数解释:
名称 |
描述 |
q |
query 查询字符串,必须的。 |
fq |
filter query。使用Filter Query可以充分利用Filter Query Cache,提高检索性能。作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。 |
fl |
field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。 |
start |
用于分页定义结果起始记录数,默认为0。 |
rows |
用于分页定义结果每页返回记录数,默认为10。 |
sort |
排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。 |
df |
默认的查询字段,一般默认指定。 |
q.op |
覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。必须大写 |
wt |
writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义了查询输出格式:xml、json、python、ruby、php、phps、custom。 |
qt |
query type,指定查询使用的Query Handler,默认为“standard”。 |
explainOther |
设置当debugQuery=true时,显示其他的查询说明。 |
defType |
设置查询解析器名称。 |
timeAllowed |
设置查询超时时间。 |
omitHeader |
设置是否忽略查询结果返回头信息,默认为“false”。 |
indent |
返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。 |
version |
查询语法的版本,建议不使用它,由服务器指定默认值。 |
debugQuery |
设置返回结果是否显示Debug信息。 |
hl |
高亮 |