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加索引有没有效果

答:

  1. 当数据量很大是,我们的查询速率会很慢
  2. 因为我们模糊查询的左边加了"%",所以索引会失效,进行全表扫描,此时若数据量很大,这条sql执行速度会很慢

3.solr的采用的方式解决上述问题

​ 我们通常数据库中最常用的就是主键索引,通常我们都用id来查询该条数据,而solr的倒排序索引就是通过关键词来查找对应的id,利用id来查找我们需要的数据,不过在solr中每条数据称为文档,下面展示一个形象的图

solr学习总结<一>

solr学习总结<一>

​ 之所以说上图所示倒排索引是最简单的,是因为这个索引系统只记载了哪些文档包含某个单词,而事实上,索引系统还可以记录除此之外的更多信息。下图是一个相对复杂些的倒排索引,与上图的基本索引系统比,在单词对应的倒排列表中不仅记录了文档编号,还记载了单词频率信息(TF),即这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子,所以将其记录在倒排列表中,以方便后续排序时进行分值计算。在图5的例子里,单词“创始人”的单词编号为7,对应的倒排列表内容为:(3:1),其中的3代表文档编号为3的文档包含这个单词,数字1代表词频信息,即这个单词在3号文档中只出现过1次,其它单词对应的倒排列表所代表含义与此相同。

solr学习总结<一>

还有POS之类的不在过多介绍,有兴趣可以去了解更多。

二、solr的安装

1、安装条件

​ 因为solr是基于Lucene,而Lucene是java写的,所以solr需要安装jdk,目前我安装的是solr7+版本,jdk需要1.8及以上

2、下载solr

solr学习总结<一>

​ 下载地址 :https://lucene.apache.org/solr/downloads.html

3、启动solr

下载完毕后解压

solr学习总结<一>

在solr-7.7.3/bin目录下打开cmd

solr学习总结<一>

输入:solr start -p端口号(后面的可以不输入,不输入采用默认端口8983)

solr学习总结<一>

solr stop -p端口号,停止solr

当你打开浏览器访问:http://localhost:8088会出现一个图形管理界面,此时意味这个solr安装并已启动

4、solr目录介绍

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管理页面去创建(不推荐)

solr学习总结<一>

solr学习总结<一>

此时点击add core会出现上述错误查看目录

solr学习总结<一>

解决上面的问题我们需要

solr学习总结<一>

再回到控制台重新创建

solr学习总结<一>

这个时候就不会再报错,第一个索引库就创建完成了

2、使用命令创建(推荐)

solr学习总结<一>

solr create_core -c coreName

这样就创建完成了

solr学习总结<一>

一篇写不完,下一篇接着写