solr学习总结<一>
Solr学习
一、为什么学习solr
1.solr的作用
solr是一个基于Apache Lucene之上的搜索服务器,它是一个开源的、基于Java的信息检索库。它旨在驱动功能强大的文档检索应用程序 -无论您需要根据用户的查询将数据服务到何处,Solr都可以为您服务。Solr与应用程序的集成以为您服务。
2.为什么数据库可以模糊查询还需要solr
select * form sku where sku_name like “%手机%”
我们分析一下上面的sql
问题:
1、这个查询的速度快不快
2、这个sku_name加索引有没有效果
答:
- 当数据量很大是,我们的查询速率会很慢
- 因为我们模糊查询的左边加了"%",所以索引会失效,进行全表扫描,此时若数据量很大,这条sql执行速度会很慢
3.solr的采用的方式解决上述问题
我们通常数据库中最常用的就是主键索引,通常我们都用id来查询该条数据,而solr的倒排序索引就是通过关键词来查找对应的id,利用id来查找我们需要的数据,不过在solr中每条数据称为文档,下面展示一个形象的图
之所以说上图所示倒排索引是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词,而事实上,索引系统还可以记录除此之外的更多信息。下图是一个相对复杂些的倒排索引,与上图的基本索引系统比,在单词对应的倒排列表中不仅记录了文档编号,还记载了单词频率信息(TF),即这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子,所以将其记录在倒排列表中,以方便后续排序时进行分值计算。在图5的例子里,单词“创始人”的单词编号为7,对应的倒排列表内容为:(3:1),其中的3代表文档编号为3的文档包含这个单词,数字1代表词频信息,即这个单词在3号文档中只出现过1次,其它单词对应的倒排列表所代表含义与此相同。
还有POS之类的不在过多介绍,有兴趣可以去了解更多。
二、solr的安装
1、安装条件
因为solr是基于Lucene,而Lucene是java写的,所以solr需要安装jdk,目前我安装的是solr7+版本,jdk需要1.8及以上
2、下载solr
下载地址 :https://lucene.apache.org/solr/downloads.html
3、启动solr
下载完毕后解压
在solr-7.7.3/bin目录下打开cmd
输入:solr start -p端口号(后面的可以不输入,不输入采用默认端口8983)
solr stop -p端口号,停止solr
当你打开浏览器访问:http://localhost:8088会出现一个图形管理界面,此时意味这个solr安装并已启动
4、solr目录介绍
三、solr的名词解释
1、名词解释
-
索引库
类似于MySQL中的某个表,存放着所有的数据
-
索引分词
solr在导入索引库时,会对某些语句进行分词
-
搜索分词
solr在搜索索引库时,会对某些语句进行分词
-
文档
对应着数据库中某个表中的一条数据
-
字段
对应着某条数据的某个字段
-
和MySQL的数据库做对比
MySQL solr 表 索引库 行 文档 列 字段 注:其实索引库对MySQL中的数据库,但solr中没有表这个概念,对应MySQL的表更好理解
2、配置文件说明
在 Solr 的目录中,你会发现这些文件:
solr.xml:为您的 Solr 服务器实例指定配置选项。
每个 Solr core:
- core.properties:为每个核心定义特定的属性,例如其名称、核心所属的集合、模式的位置以及其他参数。
- solrconfig.xml:控制高级行为。例如,您可以为数据目录指定一个备用位置。
- managed-schema(或用 schema.xml 替代)描述您将要求 Solr 索引的文档。模式将文档定义为字段集合。您可以同时定义字段类型和字段本身。字段类型定义功能强大,包含有关 Solr 如何处理传入字段值和查询值的信息。
- data/:包含索引文件的目录。
四、solr索引库创建
1、使用solr管理页面去创建(不推荐)
此时点击add core会出现上述错误查看目录
解决上面的问题我们需要
再回到控制台重新创建
这个时候就不会再报错,第一个索引库就创建完成了
2、使用命令创建(推荐)
solr create_core -c coreName
这样就创建完成了
一篇写不完,下一篇接着写