什么是solr?
Solr是Apache下的开源的, 高性能的,采用Java开发,基于Lucene的,全文搜索引擎。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索擎。
其功能管理界面如下图所示:
什么是Lucene?
Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
什么是搜索引擎?
所谓搜索引擎,就是根据用户需求与一定算法,运用特定策略从互联网检索出制定信息反馈给用户的一门检索技术。搜索引擎依托于多种技术,如网络爬虫技术、检索排序技术、网页处理技术、大数据处理技术、自然语言处理技术等,为信息检索用户提供快速、高相关性的信息服务。搜索引擎技术的核心模块一般包括爬虫、索引、检索和排序等,同时可添加其他一系列辅助模块,以为用户创造更好的网络使用环境。
国内著名搜索引擎百度,国外代表有谷歌。
为什么数据库有了模糊查询语句,还要使用solr呢?
like 会遍历每个字去模糊匹配,当数据量特别大的时候,查询的效率很低,并且大部分数据不符合用户想要的结果。
sorl在windows下的常用命令
solr.cmd start 开启solr服务
solr.cmd stop -p 8983 停止solr服务
solr.cmd restart -p 8983 重启solr服务
solr.cmd create -c proudct 创建solr core
solr的下载
1.进入solr官网进行下载http://archive.apache.org/dist/lucene/solr/
2.根据操作系统进行下载
3.把我们的下载文件解压到某个位置中
4.进入bin目录下使用cmd命令启动sorl
输入solr.cmd start进行启动
5.启动后浏览器进入localhost:8983,看到如下页面则表示启动成功
solr连接数据库配置
core表示的一个完整的索引,可以近似的看作一个数据库。core里面可以存放很多份数据,而且一个solr实例可以有多个core。
- 我们要先创建一个core
- 我们会报一个错误,我们需要把E:\Program Files\solr-7.7.2\example\example-DIH\solr\solr目录下的两个文件copy到我们的E:\Program
Files\solr-7.7.2\server\solr\new_core目录下
- 接下来我们重启solr服务器,在cmd命令中输入solr.cmd restart 8983
- 引入相关的jar包 将这些jar包导入E:\Program
Files\solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib文件夹
什么是ik分词器:默认的中文分词是将每个字看成一个词,这显然是不符合要求的,所以我们需要安装中文分词器来解决这个问题。IK分词是一款国人开发的相对简单的中文分词器。虽然开发者自2012年之后就不在维护了,但在工程应用中IK算是比较流行的一款!我们今天就介绍一下IK中文分词器的使用。
- solr数据源配置(solr-data-config)
- ik分词器配置
- 自定义字段配置
solr配置常见问题
- 数据库数据无法同步到solr
原因: (1) 驱动和数据库版本不对应 (2) solr中的solr-data-config.xml配置有问题 (数据源配
置或者是标签嵌套有问题) 2. 已从数据库同步到solr中,但查询时仍然无法查询到数据
原因: managed-schema.xml配置有问题, 主要查看数据类型/分词器是否存在 - 查询出的数据带 中括号 [“aaa”], 导致关键字搜索有问题原因: solr默认不支持中文, 需要引入IK分词器. 字段的类型要切换为text_ik
- 一切到配置好了,solr界面查询不到数据原因, 没有点击同步数据按钮.