solr搜索引擎服务搭建
点关注不迷路,欢迎再来!
精简博客内容,尽量已专业术语来分享。
努力做到对每一位认可自己的读者负责。
帮助别人的同时更是丰富自己的良机。
最近因业务需要,废弃传统关系型数据库查询,为提高搜索效率先需要使用solr来实现全文搜索引擎。话不多说,先来部署下solr服务。
一. Solr介绍
Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
使用Solr 进行创建索引和搜索索引的实现方法很简单,如下:
-
创建索引:客户端(可以是浏览器可以是Java程序)用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr服务器根据xml文档添加、删除、更新索引 。
-
搜索索引:客户端(可以是浏览器可以是Java程序)用 GET方法向 Solr 服务器发送请求,然后对Solr服务器返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建页面UI的功能,但是Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
二. Solr环境部署
环境:jdk 1.8 + window10 64位
下载地址http://lucene.apache.org/solr/,解压后会获得一个solr-7.7.2文件夹
bin: solr的运行脚本
contrib : solr的一些贡献软件/插件,用于增强solr的功能。
dist : 该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。
docs :solr的API文档
example :solr工程的例子目录
example/solr: 该目录是一个包含了默认配置信息的Solr的Core目录。
example/multicore: 该目录包含了在Solr的multicore中设置的多个Core目录。
example/webapps:
该目录中包括一个solr.war,该war可作为solr的运行实例工程。
cmd命令行下切换到解压目录下的bin目录下,启动slor服务,启动命令为:
默认端口在8983
当然也可以用下述命令启动单机版的solr:
solr start
也可以自定义端口:
solr start -p 8080
启动服务之后在http://localhost:8983就可以打开启动的solr服务
三. 创建core实例
-
core简介
简单说core就是solr的一个实例,一个solr服务下可以有多个core,每个core下都有自己的索引库和与之相应的配置文件,所以在操作solr创建索引之前要创建一个core,因为索引都存在core下面。 -
core创建
core的创建方式,列出两种比较方便的。
(1). 以管理进入cmd, 在$SOLR_HOME/bin目录下执行solr create –c ,创建一个core
执行完后,会在/server/solr 下创建一个 my_core文件夹。
(2).在AdminUI页面创建一个core。
四、managed-schema(schema.xml)
1. schema简介:
schema是用来告诉solr如何建立索引的,他的配置围绕着一个schema配置文件,这个配置文件决定着solr如何建立索引,每个字段的数据类型,分词方式等,老版本的schema配置文件的名字叫做schema.xml他的配置方式就是手工编辑,但是现在新版本的schema配置文件的名字叫做managed-schema,他的配置方式不再是用手工编辑而是使用schemaAPI来配置,官方给出的解释是使用schemaAPI修改managed-schema内容后不需要重新加载core或者重启solr更适合在生产环境下维护,如果使用手工编辑的方式更改配置不进行重加载core有可能会造成配置丢失,配置文件所在的路径如下:
2. schema 主要成员
<schema>
<field/>
<dynamicField/>
<uniqueKey/>
<fieldType>
<analyzer>
<tokenizer/>
<filter/>
</analyzer>
</fieldType/>
<copyField/>
<dynamicField>
</schema>
(1) fieldType:为field定义类型,最主要作用是定义分词器,分词器决定着如何从文档中检索关键字。
(2) analyzer:他是fieldType下的子元素,这就是传说中的分词器,他由一组tokenizer和filter组成。
(3) field:他是创建索引用的字段,如果想要这个字段生成索引需要配置他的indexed属性为true,stored属性为true表示存储该索引。如下图所示每个field都要引用一种fieldType由type属性定义
五、managed-schema文件配置自定义IK分词器
下载IK分词器l链接:http://search.maven.org/#search%7Cga%7C1%7Ccom.github.magese
将下载好的jar包放入solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib目录中
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
配置完成后再次重启一次solr服务
选择mycore -> Analysis -> 选择分词器 text_ik 输入 “我是从事Java开发工作”
点击"Analyse Values"按钮可以看到结果已经分词成功了。
六、springboot集成solr
https://blog.csdn.net/qq_39443053/article/details/96179656